M = 2 * 10**5 + 1
sieve = [True] * M
sieve[0] = sieve[1] = False
for i in range(2, int(M**0.5) + 1):
for j in range(2 * i, M, i):
sieve[j] = False
def make_pairs(n):
ans = []
def find(m):
if m == 1:
return [[(1, 2)], 0]
ts = []
ns = set(range(1, 2 * m + 1))
for p in range(2 * m + 1, 4 * m):
if sieve[p]:
print("p :", p)
for k in range(m, 2 * m + 1):
if p - k < k:
ts.append((p - k, k))
ns.discard(k)
ns.discard(p - k)
break
return (ts, max(ns, default=0) // 2)
while 2 * n > 1:
a, _n = find(n)
print(a, _n)
ans.extend(a)
n = _n
return ans
# for n in range(1, 1001):
# r = make_pairs(n)
# print(r)
r = make_pairs(4)
print(r)
To embed this program on your website, copy the following code and paste it into your website's HTML: