Jump to content

Chernick's Carmichael numbers: Difference between revisions

m (→‎{{header|Sidef}}: added zkl header)
(→‎{{header|zkl}}: added code)
Line 254:
 
=={{header|zkl}}==
{{trans|Go}}
<lang zkl></lang>
{{libheader|GMP}} GNU Multiple Precision Arithmetic Library
<lang zkl></lang>
Using GMP (probabilistic primes),
because it is easy and fast to check primeness.
<lang zkl>var [const] BI=Import("zklBigNum"); // libGMP
 
fcn ccFactors(n,m){ // not re-entrant
prod:=BI(6*m + 1);
if(not prod.probablyPrime()) return(False);
fact:=BI(12*m + 1);
if(not fact.probablyPrime()) return(False);
prod.mul(fact);
foreach i in ([1..n-2]){
fact.set((2).pow(i) *9*m + 1);
if(not fact.probablyPrime()) return(False);
prod.mul(fact);
}
prod
}
 
fcn ccNumbers(start,end){
foreach n in ([start..end]){
a,m := ( if(n<=4) 1 else (2).pow(n - 4) ), a;
while(1){
if(num := ccFactors(n,m)){
println("a(%d) = %,d".fmt(n,num));
break;
}
m+=a;
}
}
<lang zkl>}</lang>
<lang zkl>ccNumbers(3,9);</lang>
{{out}}
<pre>
a(3) = 1,729
 
a(4) = 63,973
a(5) = 26,641,259,752,490,421,121
a(6) = 1,457,836,374,916,028,334,162,241
a(7) = 24,541,683,183,872,873,851,606,952,966,798,288,052,977,151,461,406,721
a(8) = 53,487,697,914,261,966,820,654,105,730,041,031,613,370,337,776,541,835,775,672,321
a(9) = 58,571,442,634,534,443,082,821,160,508,299,574,798,027,946,748,324,125,518,533,225,605,795,841
</pre>
Anonymous user
Cookies help us deliver our services. By using our services, you agree to our use of cookies.