Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
|
|
@ -0,0 +1,66 @@
|
|||
"""
|
||||
|
||||
Python implementation of
|
||||
http://rosettacode.org/wiki/Chernick%27s_Carmichael_numbers
|
||||
|
||||
"""
|
||||
|
||||
# use sympy for prime test
|
||||
|
||||
from sympy import isprime
|
||||
|
||||
# based on C version
|
||||
|
||||
def primality_pretest(k):
|
||||
if not (k % 3) or not (k % 5) or not (k % 7) or not (k % 11) or not(k % 13) or not (k % 17) or not (k % 19) or not (k % 23):
|
||||
return (k <= 23)
|
||||
|
||||
return True
|
||||
|
||||
def is_chernick(n, m):
|
||||
|
||||
t = 9 * m
|
||||
|
||||
if not primality_pretest(6 * m + 1):
|
||||
return False
|
||||
|
||||
if not primality_pretest(12 * m + 1):
|
||||
return False
|
||||
|
||||
for i in range(1,n-1):
|
||||
if not primality_pretest((t << i) + 1):
|
||||
return False
|
||||
|
||||
if not isprime(6 * m + 1):
|
||||
return False
|
||||
|
||||
if not isprime(12 * m + 1):
|
||||
return False
|
||||
|
||||
for i in range(1,n - 1):
|
||||
if not isprime((t << i) + 1):
|
||||
return False
|
||||
|
||||
return True
|
||||
|
||||
for n in range(3,10):
|
||||
|
||||
if n > 4:
|
||||
multiplier = 1 << (n - 4)
|
||||
else:
|
||||
multiplier = 1
|
||||
|
||||
if n > 5:
|
||||
multiplier *= 5
|
||||
|
||||
|
||||
k = 1
|
||||
|
||||
while True:
|
||||
m = k * multiplier
|
||||
|
||||
if is_chernick(n, m):
|
||||
print("a("+str(n)+") has m = "+str(m))
|
||||
break
|
||||
|
||||
k += 1
|
||||
Loading…
Add table
Add a link
Reference in a new issue