Erdős-Nicolas numbers: Difference between revisions

Added Perl
(Added Perl)
Line 127:
1571328 equals the sum of its first 115 divisors.
</pre>
 
=={{header|Perl}}==
{{libheader|ntheory}}
<syntaxhighlight lang="perl" line>use v5.36;
use ntheory 'divisors';
use enum qw(False True);
use List::AllUtils <firstidx sum>;
 
sub proper_divisors ($n) {
return 1 if $n == 0;
my @d = divisors($n);
pop @d;
@d;
}
 
sub is_Erdos_Nicolas ($n) {
my @divisors = proper_divisors($n);
return False unless sum(@divisors) > $n;
my $sum;
my $key = firstidx { $_ == $n } map { $sum += $_ } @divisors;
$key ? 1 + $key : False;
}
 
my($n,$count) = (2,0);
until ($count == 8) {
next unless 0 == ++$n % 2;
if (my $key = is_Erdos_Nicolas $n) {
printf "%8d == sum of its first %3d divisors\n", $n, $key;
$count++
}
}</syntaxhighlight>
{{out}}
<pre> 24 == sum of its first 6 divisors
2016 == sum of its first 31 divisors
8190 == sum of its first 43 divisors
42336 == sum of its first 66 divisors
45864 == sum of its first 66 divisors
392448 == sum of its first 68 divisors
714240 == sum of its first 113 divisors
1571328 == sum of its first 115 divisors</pre>
 
=={{header|Phix}}==
2,392

edits