#!/usr/bin/env python3 import subprocess A=10**18+2500;N=2500;M=1000000 r=list(range(A,A+N));bad=bytearray(N);s=bytearray([1])*(M+1);s[0]=s[1]=0 for p in range(2,M+1): if s[p]: h=p>3 and p%3==1 and pow(2,(p-1)//3,p)!=1 for i in range((-A)%p,N,p): e=0 while r[i]%p==0:r[i]//=p;e+=1 if h and e%3:bad[i]=1 if p*p<=M: for j in range(p*p,M+1,p):s[j]=0 ids=[i for i in range(N) if not bad[i] and r[i]>1] o=subprocess.run(["/usr/bin/factor"],input=chr(10).join(str(r[i]) for i in ids)+chr(10),text=True,capture_output=True,timeout=7).stdout ans=sum(not bad[i] and r[i]==1 for i in range(N)) for line in o.splitlines(): fs=list(map(int,line.split(":")[1].split())) ok=True for p in set(fs): if p>3 and p%3==1 and pow(2,(p-1)//3,p)!=1 and fs.count(p)%3:ok=False ans+=ok print(2500,ans,len(ids),len(o.splitlines()))