#!/usr/bin/env python3 """ Q-GoH: Quantum Goldbach Hypothesis — one-file infinity runner """ import itertools, math, sympy, time from qiskit import QuantumCircuit from qiskit_aer import AerSimulator def mask(max_val): return [1 if sympy.isprime(i) else 0 for i in range(max_val + 1)] def grover_once(N): n = math.ceil(math.log2(N // 2 + 1)) qc = QuantumCircuit(2 * n, 2 * n) qc.h(range(2 * n)) m = mask(N // 2) # oracle flags: p,q prime and p+q=N for val, is_prime in enumerate(m): if is_prime: ctrl = [i for i in range(n) if not (val >> i) & 1] if ctrl: qc.x(ctrl) qc.mcx(list(range(n)), 0) # flag p if ctrl: qc.x(ctrl) ctrl = [i + n for i in range(n) if not (val >> i) & 1] if ctrl: qc.x(ctrl) qc.mcx(list(range(n, 2 * n)), 1) # flag q if ctrl: qc.x(ctrl) qc.measure_all() counts = AerSimulator().run(qc, shots=64).result().get_counts() for bits, _ in counts.items(): p = int(bits[:n], 2) q = int(bits[n:], 2) if sympy.isprime(p) and sympy.isprime(q) and p + q == N: return p, q return None def main(): for N in itertools.count(4, 2): t0 = time.perf_counter() pair = grover_once(N) dt = time.perf_counter() - t0 print(f"{N} = {pair[0]} + {pair[1]} (found in {dt:.3f}s)" if pair else f"{N} ❌ ({dt:.3f}s)") if __name__ == "__main__": main()