Chernick's Carmichael numbers: Difference between revisions

m
→‎{{header|Phix}}: improved output
m (→‎{{header|Phix}}: improved output)
Line 906:
function chernick_carmichael_number(integer n)
integer multiplierm = iff(n>4 ? power(2,n-4) : 1), mmm = 1m
while not is_chernick_carmichael(n, m * multipliermm) do mmm += 1m end while
return {chernick_carmichael_factors(n, m * multipliermm),mm}
end function
for n=3 to 9 do
{sequence f, integer m} = chernick_carmichael_number(n)
mpz_set_si(p,1)
for i=1 to length(f) do f[i] = sprintf("%d",f[i]) end for
printf(1,"a(%d)for i=1 %s\n",{n,jointo length(f,") * ")})do
mpz_mul_d(p,p,f[i])
for i=1 to length(f) do f[i] = sprintf("%d",f[i]) end for
end for
printf(1,"U(%d,%d): %s = %s\n",{n,m,mpz_get_str(p),join(f," * ")})
end for</lang>
{{out}}
<pre style="font-size: 10px">
<pre>
aU(3,1): 1729 = 7 * 13 * 19
aU(4,1): 63973 = 7 * 13 * 19 * 37
aU(5,380): 26641259752490421121 = 2281 * 4561 * 6841 * 13681 * 27361
aU(6,380): 1457836374916028334162241 = 2281 * 4561 * 6841 * 13681 * 27361 * 54721
aU(7,780320): 24541683183872873851606952966798288052977151461406721 = 4681921 * 9363841 * 14045761 * 28091521 * 56183041 * 112366081 * 224732161
aU(8,950560): 53487697914261966820654105730041031613370337776541835775672321 = 5703361 * 11406721 * 17110081 * 34220161 * 68440321 * 136880641 * 273761281 * 547522561
aU(9,950560): 58571442634534443082821160508299574798027946748324125518533225605795841 = 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.
7,805

edits