-
Notifications
You must be signed in to change notification settings - Fork 0
/
from_product.pl
65 lines (53 loc) · 2.06 KB
/
from_product.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
61
62
63
64
65
#!/usr/bin/perl
use 5.014;
use Math::GMPz;
use ntheory qw(forsemiprimes forprimes factor forsquarefree random_prime divisors gcd next_prime);
use Math::Prime::Util::GMP qw(mulint is_pseudoprime vecprod divint sqrtint vecprod is_carmichael);
#my $k = vecprod(3, 5, 17, 23, 29, 43, 53, 89, 113, 127, 157, 257);
#my $k = vecprod(3, 5, 17, 23, 29, 43, 53, 89, 113, 127, 157, 269);
#my $k = vecprod(3, 5, 17, 23, 29, 43, 53, 89, 113, 127, 157, 257, 2689);
#my $k = vecprod(3, 5, 17, 23, 29, 43, 53, 89, 113, 127, 157, 257, 2689, 13553);
#my $k = vecprod(3, 5, 17, 23, 29, 43, 53, 89, 113, 257, 2731, 24007);
#my $k = vecprod(3, 5, 17, 23, 29, 43, 53, 89, 113, 127, 157, 257, 2689, 13553);
#my $k = vecprod(3, 5, 17, 23, 29, 43, 53, 89, 113, 127, 157, 257, 2689, 13553, 192193, 1921921, 2434433);
#my $k = vecprod(3, 5, 17, 23, 29, 43, 53, 89, 113, 127, 157, 257, 353, 397, 449, 617, 1093, 1499);
#my $k = vecprod(3, 5, 17, 23, 29, 53, 89);
#my $k = vecprod(3, 5, 17, 23, 89, 113, 149);
#my $k = vecprod(3, 5, 17, 23, 89, 113, 149, 3257);
#my $k = vecprod(3, 5, 17, 23, 89, 113, 149, 3557);
my $k = vecprod(3, 5, 17, 23, 29, 197, 617, 1217);
forsquarefree {
if ($_ & 1) {
if (gcd($_, $k) == 1 and is_carmichael(mulint($k, $_))) {
say mulint($k, $_);
}
}
} 1e8;
__END__
#my $k = "44914889889994250085";
#my $k = "127237648413581445";
my $k = "77728835801292945";
#my $k = "20909056830547802205";
my $from = (factor($k))[-1];
my $limit = 25000;
my @factors;
for(my $p1 = next_prime($from); $p1 <= $limit; $p1 = next_prime($p1)) {
for(my $p2 = next_prime(int($p1*10)); $p2 <= $limit; $p2 = next_prime($p2)) {
for(my $p3 = next_prime(int($p2*7)); $p3 <= $limit; $p3 = next_prime($p3)) {
my $factor = $p1*$p2*$p3;
if (is_pseudoprime(mulint($k, $factor), 2)) {
say mulint($k, $factor);
}
}
}
}
__END__
say $count;
my $from = 1e8+1e7+1e7+1e7+1e7;
forsquarefree {
if ($_ % 2 == 1) {
if (is_pseudoprime(mulint($k, $_), 2)) {
say mulint($k, $_);
}
}
} $from,$from+1e7;