ダブル完全数(3倍完全数)
30分プログラム、その146。 ダブル完全数。
ここで「自分以外の約数の和が自分自身の2倍と等しいような整数」を「ダブル完全数」と呼ぶことにします。10000以下のダブル完全数をすべて求めるコードを書いてください。
使い方
$ perl perfect.pl 120 672
ソースコード
#! /usr/bin/perl # -*- mode:perl; coding:utf-8 -*- # # perfect.pl - # # Copyright(C) 2007 by mzp # Author: MIZUNO Hiroki <hiroki1124@gmail.com> # http://mzp.sakura.ne.jp/ # # Timestamp: 2007/09/29 12:14:42 # # This program is free software; you can redistribute it and/or # modify it under the same terms as Perl itself. # use strict; use warnings; use List::Util; sub divsor($){ my ($n) = @_; grep { $n % $_ == 0 } (1..$n); } sub doublePerfect($){ my ($n) = @_; my @div = divsor($n); List::Util::sum(@div) == $n*3; } my @result = grep { doublePerfect $_ } (1..10_000); print "@result\n";