-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathgroup.pl
60 lines (48 loc) · 1.03 KB
/
group.pl
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
54
55
56
57
58
59
60
#!/usr/bin/perl
use 5.014;
my %fermat;
my %lucas;
my %fib;
use Math::GMPz;
while (<>) {
chomp;
if (/^Fermat: (\d+)/) {
my $n = Math::GMPz->new($1);
if ($n > 1e15) {
$fermat{$n} = $n;
}
}
elsif (/^Lucas: (\d+)/) {
my $n = Math::GMPz->new($1);
if ($n > 1e15) {
$lucas{$n} = $n;
}
}
elsif (/^Fibonacci: (\d+)/) {
my $n = Math::GMPz->new($1);
if ($n > 1e15) {
$fib{$n} = $n;
}
}
else {
die "Error for: $_";
}
}
open my $fer_fh, '>', 'fermat.txt';
open my $fib_fh, '>', 'fib.txt';
open my $lucas_fh, '>', 'lucas.txt';
my @lucas = values %lucas;
my @fib = values %fib;
my @fermat = values %fermat;
@fermat = grep { !exists($lucas{$_}) } @fermat;
@fib = grep { !exists($lucas{$_}) } @fib;
@fib = grep { !exists($fermat{$_}) } @fib;
foreach my $n (@fermat) {
say {$fer_fh} $n;
}
foreach my $n (@lucas) {
say {$lucas_fh} $n;
}
foreach my $n (@fib) {
say {$fib_fh} $n;
}