-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathProb21.pl
More file actions
53 lines (53 loc) · 941 Bytes
/
Prob21.pl
File metadata and controls
53 lines (53 loc) · 941 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#! usr/bin/perl
#Matthew Digman
use strict;
use warnings;
sub factorize{
my $num=shift;
my %factors;
for(my $itr=1; $itr<=sqrt $num; $itr++){
unless($num%$itr){
$factors{$itr}=1;
unless($itr==1){
$factors{($num/$itr)}=1;
}
}
}
keys %factors;
}
sub sum{
my $sum=0;
$sum+=$_ for(@_);
if($sum<=1){
return undef;
}
$sum;
}
my %divisors;
for(1..10000){
$divisors{$_}=sum(factorize($_));
}
print "Here\n";
my %amicable;
for(keys %divisors){
my $sum=$divisors{$_};
if(defined $sum&&defined $divisors{$sum}&&$sum!=$_){
if($divisors{$sum}==$_){
$amicable{$sum}=$_;
}
}
if(defined $sum){
$divisors{$_}=undef;
}
}
my $sum;
for(sort {$a<=>$b} keys %amicable){
$sum+=$_+$amicable{$_};
print "$_ => $amicable{$_}\n";
my @f1=factorize($_);
my $s1=sum(@f1);
my @f2=factorize($amicable{$_});
my $s2=sum(@f2);
print "@f1\n$s1\n$s2\n@f2\n";
}
print "$sum\n";