Chernick's Carmichael numbers: Difference between revisions

(Added Julia)
Line 603:
U(8, 950560): 53487697914261966820654105730041031613370337776541835775672321 = 5703361 ⨉ 11406721 ⨉ 17110081 ⨉ 34220161 ⨉ 68440321 ⨉ 136880641 ⨉ 273761281 ⨉ 547522561
U(9, 950560): 58571442634534443082821160508299574798027946748324125518533225605795841 = 5703361 ⨉ 11406721 ⨉ 17110081 ⨉ 34220161 ⨉ 68440321 ⨉ 136880641 ⨉ 273761281 ⨉ 547522561 ⨉ 1095045121</pre>
 
=={{header|Phix}}==
{{libheader|mpfr}}
{{trans|Sidef}}
<lang Phix>function chernick_carmichael_factors(integer n, m)
sequence res = {6*m + 1, 12*m + 1}
for i=1 to n-2 do
res &= power(2,i) * 9*m + 1
end for
return res
end function
 
include mpfr.e
mpz p = mpz_init()
randstate state = gmp_randinit_mt()
 
function m_prime(atom a)
mpz_set_d(p,a)
return mpz_probable_prime_p(p, state)
end function
 
function is_chernick_carmichael(integer n, m)
return iff(n==2 ? m_prime(6*m + 1) and m_prime(12*m + 1)
: m_prime(power(2,n-2) * 9*m + 1) and
is_chernick_carmichael(n-1, m))
end function
function chernick_carmichael_number(integer n)
integer multiplier = iff(n>4 ? power(2,n-4) : 1), m = 1
while not is_chernick_carmichael(n, m * multiplier) do m += 1 end while
return chernick_carmichael_factors(n, m * multiplier)
end function
for n=3 to 9 do
sequence f = chernick_carmichael_number(n)
for i=1 to length(f) do f[i] = sprintf("%d",f[i]) end for
printf(1,"a(%d) = %s\n",{n,join(f," * ")})
end for</lang>
{{out}}
<pre>
a(3) = 7 * 13 * 19
a(4) = 7 * 13 * 19 * 37
a(5) = 2281 * 4561 * 6841 * 13681 * 27361
a(6) = 2281 * 4561 * 6841 * 13681 * 27361 * 54721
a(7) = 4681921 * 9363841 * 14045761 * 28091521 * 56183041 * 112366081 * 224732161
a(8) = 5703361 * 11406721 * 17110081 * 34220161 * 68440321 * 136880641 * 273761281 * 547522561
a(9) = 5703361 * 11406721 * 17110081 * 34220161 * 68440321 * 136880641 * 273761281 * 547522561 * 1095045121
</pre>
Pleasingly fast, note however that a(10) remains well out of reach / would probably need a complete rewrite.
 
=={{header|Sidef}}==
7,805

edits