"""
ATTRACTOR COORDINATE SYSTEM: COMPLETE TEST
Run this. It takes 2-5 minutes.
"""

import math
import time

def A(j):
    return (4**j - 1) // 3

def C(j):
    return 2**(2*j - 1)

def sieve_primes(limit):
    is_prime = bytearray(b'\x01') * (limit + 1)
    is_prime[0:2] = b'\x00\x00'
    for i in range(2, int(limit**0.5) + 1):
        if is_prime[i]:
            start = i * i
            step = i
            is_prime[start:limit+1:step] = b'\x00' * ((limit - start)//step + 1)
    return {i for i in range(2, limit + 1) if is_prime[i]}

def get_twin_coordinates(j, prime_set):
    Cj = C(j)
    Aj = A(j)
    twins = []
    for x in range(1, Cj + 1, 4):
        n1 = Aj + 2*x
        if n1 in prime_set and (n1 + 2) in prime_set:
            twins.append(x)
    return twins

def analyze_generation(j, prime_set):
    T_j = get_twin_coordinates(j, prime_set)
    
    T_gen = []
    for x in T_j:
        z = 4*x + 1
        if z <= C(j+1):
            n1 = A(j+1) + 2*z
            if n1 in prime_set and (n1 + 2) in prime_set:
                T_gen.append(z)
    
    T_next = get_twin_coordinates(j+1, prime_set)
    
    result = {
        'j': j,
        '|T_j|': len(T_j),
        '|T_gen|': len(T_gen),
        '|T_next|': len(T_next)
    }
    if len(T_next) > 0:
        result['R_j'] = len(T_gen) / len(T_next)
    else:
        result['R_j'] = 0.0
    return result

# ============================================================
# PART 1: Generation Analysis (j=2 to 6)
# ============================================================

print("=" * 60)
print("EXTENDED TEST: Generation Analysis (j=2 to 6)")
print("=" * 60)

j_max = 6
max_n = A(j_max + 1) + 2*C(j_max + 1) + 10

print(f"Sieving primes up to {max_n:,}...")
start = time.time()
prime_set = sieve_primes(max_n)
print(f"Done. Found {len(prime_set):,} primes in {time.time()-start:.2f}s")

print("\nAnalyzing levels j=2 to 6...\n")
print(f"{'j':<6} {'|T_j|':<10} {'|T_gen|':<12} {'|T_next|':<12} {'R_j':<12}")
print("-" * 55)

for j in range(2, j_max + 1):
    result = analyze_generation(j, prime_set)
    print(f"{j:<6} {result['|T_j|']:<10} {result['|T_gen|']:<12} {result['|T_next|']:<12} {result['R_j']:<12.6f}")

# ============================================================
# PART 2: Symmetric Prime Pair Table (j=2 to 4)
# ============================================================

print("\n" + "=" * 60)
print("SYMMETRIC PRIME PAIRS FOR TWIN PRIMES UP TO j=4")
print("=" * 60)

print(f"\n{'Twin Prime Pair':<20} {'Level j':<10} {'Symmetric Pair (x, C-x)':<25}")
print("-" * 60)

for j in range(2, 5):
    Cj = C(j)
    Aj = A(j)
    
    T_j = get_twin_coordinates(j, prime_set)
    
    for x in T_j:
        p = Aj + 2*x
        q = p + 2
        sym_pair = (x, Cj - x)
        print(f"({p}, {q}){' ':<14} {j:<10} {sym_pair}")

print("\n" + "=" * 60)
print("DONE.")
print("=" * 60)

Embed on website

To embed this project on your website, copy the following code and paste it into your website's HTML: