代码:基于数域筛法对大整数进行分解
写在最前面
版权声明:本文为原创,遵循 CC 4.0 BY-SA 协议。转载请注明出处。
随着计算机技术的发展和数学理论的进步,诸如试除法、Pollard’s rho算法、代数群因子分解算法、二次筛法和数域筛法等多种大整数分解算法相继被提出。在本实验中,我们将专注于数域筛法(Number Field Sieve, NFS),并以此方法对指定的大整数n进行分解。
该大整数n定义如下:
n=1234268228312430759578090015472355712114804731217710966738223
0、
等等,感觉代码不太对,我再找找
。当时写废了一些版本orz
1、或许可以在评论区讨论,小伙伴们都在做这个
2、俺不是这个方向的,时间久了可能记不太清楚了
3、一起食用,体验会更棒哦【代数学6】基于数域筛法对大整数进行分解
4、Python代码是用ipynb写的,超方便!可以看到每一步骤的结果。环境配置可以参考这篇:vscode配置conda环境
5、直接把ipynb文件中的代码转成了md文件,感兴趣的可以看看https://blog.csdn.net/wtyuong/article/details/134810930
6、推荐这篇文章,数学公式处理起来超方便【LaTex】8 VBA代码解决方案:md文档转Word后,全自动转换为标准的Word公式格式
7、如果想让报告更精致,别错过这篇文章【LaTeX】2利用 Pandoc + ChatGPT 优雅地润色论文,并保持 Word 公式格式:Pandoc将Word和LaTeX文件互相转化
感谢大家的阅读 ~ 如果你喜欢我的文章,欢迎三连给我鼓励和支持:👍点赞 📁 关注 💬评论,后续会给大家带来更多有用有趣的文章。
Import some packages
import ast
import time
import sage
First, get a good m for n
def m_based_representation(n, m):
result = []
while n != 0:
result.append(n % m)
n //= m
return result[::-1]
# def get_good_m(n, d):
# result = int(n ^ (1 / d))
# print(result)
# while (n // (result ^ d)) != 1:
# result -= 1
# return result
def get_good_m(n, d):
result = int(n ** (1/d)) # 使用 '**' 而不是 '^',并确保结果是整数
print(result)
while (n // (result ** d)) != 1:
# 这里可能需要其他逻辑,根据函数的目的
result += 1
return result
Some const values
"""
n = sage.rings.integer.Integer(1234268228312430759578090015472355712114804731217710966738223)
d = sage.rings.integer.Integer(3)
m = get_good_m(n, d)
ubRatFactorBase = 900
ubAlgFactorBase = 1100
ubQuadCharBase = 11
aLb = -1000
aUb = 1000
bLb = 1
bUb = 60
depth = 4
"""
n = 1234268228312430759578090015472355712114804731217710966738223
d = 4
m = get_good_m(n, d)
ubRatFactorBase = 5000
ubAlgFactorBase = 4000
ubQuadCharBase = 60
aLb = -100000
aUb = 100000
bLb = 1
bUb = 60
depth = 4
# ubRatFactorBase = 3000
# ubAlgFactorBase = 3000
# ubQuadCharBase = 100
# aLb = -2000
# aUb = 2000
# bLb = 1
# bUb = 120
# depth = 8
1054028581259435
f = m_based_representation(n, m)
f
[1, 3, 664162933718903, 254101951372902, 495910785483428]
# # BaseMExpansion函数利用辗转相除法求出多项式的系数,保证最高次的多项式的系数是1.
# def BaseMExpansion(n, m) :
# result = []
# q = n
# while(q != 0):
# a = q % m
# q = q // m
# result.append(a)
# return result[::-1]
# R.<x> = ZZ[]
# polynomialRing = R
# f = BaseMExpansion(n,m)
# f_check = polynomialRing(f[::-1])
# print(f'The function being used is: {f_check}')
# assert f_check.is_monic() and f_check.is_irreducible()
# from sympy import symbols, Poly
# # 定义多项式变量
# x = symbols('x')
# # 假设 f 是一个系数列表
# # f = [...]
# # 创建多项式
# f_check = Poly(f[::-1], x, domain='ZZ')
# # 打印多项式
# print(f'The function being used is: {f_check.as_expr()}')
# # 检查多项式是否首一和不可约,并打印相应信息
# is_monic = f_check.is_monic
# is_irreducible = f_check.is_irreducible
# print(f'Is the polynomial monic? {is_monic}')
# print(f'Is the polynomial irreducible? {is_irreducible}')
# 断言
# assert is_monic and is_irreducible
from sympy import symbols, ZZ, Poly
# BaseMExpansion函数利用辗转相除法求出多项式的系数,保证最高次的多项式的系数是1.
def BaseMExpansion(n, m):
result = []
q = n
while q != 0:
a = q % m
q = q // m
result.append(a)
return result[::-1]
# 定义变量x
x = symbols('x')
# 定义多项式环
polynomial_ring = ZZ.poly_ring(x)
# 使用BaseMExpansion函数生成多项式f
f = BaseMExpansion(n, m)
# 将f转换为多项式环中的对象f_check
f_check = Poly(f, x, domain=ZZ)
# 输出多项式
# print(f'生成的多项式是: {f_check}')
print(f'The function being used is: {f_check.as_expr()}')
# 检查多项式是否首一和不可约,并打印相应信息
is_monic = f_check.is_monic
is_irreducible = f_check.is_irreducible
print(f'Is the polynomial monic? {is_monic}')
print(f'Is the polynomial irreducible? {is_irreducible}')
# 断言f_check是首项系数为1且不可约的多项式
# assert f_check.is_monic() and f_check.is_irreducible(), "多项式不符合要求"
The function being used is: x**4 + 3*x**3 + 664162933718903*x**2 + 254101951372902*x + 495910785483428
Is the polynomial monic? True
Is the polynomial irreducible? True
from sympy import nextprime
from sympy.ntheory import isprime
from sympy.polys.domains import ZZ
from sympy.abc import x
def use_funct(f, x_val, n):
result = 0
for i, val in enumerate(f[::-1]):
result += val if i == 0 else val * pow(x_val, i, n)
return result % n
# 从2开始,按照顺序依次生成素数,参数lenRatFactorBase为最初定义的有理因子基的个数
def get_rational_factor_base(lenRatFactorBase):
result = []
currentPrime = 2
while len(result) < lenRatFactorBase:
result.append(currentPrime)
currentPrime = nextprime(currentPrime)
return result
# 代数因子基由多项式和多项式次数生成,最终生成个数由参数LenAlgFactorBase确定
def get_algebraic_factor_base(f, lenAlgFactorBase, d):
result = []
currentPrime = 2
while len(result) < lenAlgFactorBase:
countedPrimes = 0
for r in range(currentPrime + 1):
if use_funct(f, r, currentPrime) == 0 and countedPrimes < d:
result.append((r, currentPrime))
countedPrimes += 1
if countedPrimes == d:
break
currentPrime = nextprime(currentPrime)
return result
# 获取二次剩余的基,也就是Quadratic Character Base。函数的输入包括多项式 f,以及代数因子基(Algebraic Factor Base)alg_factor_base。对于代数因子基中的每个质数,将其加入 usedPrimes 集合中。从小到大遍历所有质数,对于每个质数 currentPrime,如果它已经被使用过了(即在 usedPrimes 集合中),则跳过。否则,遍历所有 s,如果 s 是 currentPrime 的二次剩余,并且当前已经找到的二次剩余个数不超过 d,则将其加入结果列表 result 中。如果已经找到 d 个二次剩余,则退出遍历。
def get_quadratic_character_base(f, lenQuadCharBase, d, algFactorBase):
usedPrimes = {prime for _, prime in algFactorBase}
result = []
currentPrime = 2
while len(result) < lenQuadCharBase:
if currentPrime not in usedPrimes:
countedPrimes = 0
for s in range(currentPrime + 1):
if use_funct(f, s, currentPrime) == 0 and countedPrimes < d:
result.append((s, currentPrime))
countedPrimes += 1
if countedPrimes == d:
break
currentPrime = nextprime(currentPrime)
return result
# def use_funct(f, x, n):
# lst = f[::-1]
# result = 0
# for i, val in enumerate(lst):
# result += val if i == 0 else val * power_mod(x, i, n)
# return result
# def get_rational_factor_base(lenRatFactorBase):
# result = []
# currentPrime = 2
# while len(result) < lenRatFactorBase:
# result.append(currentPrime)
# currentPrime = next_prime(currentPrime)
# return result
# def get_algebraic_factor_base(f, lenAlgFactorBase, d):
# result = []
# currentPrime = 2
# while len(result) < lenAlgFactorBase:
# countedPrimes = 0
# for r in range(currentPrime + 1):
# if use_funct(f, r, currentPrime) % currentPrime == 0 and countedPrimes <= d:
# result.append((r, currentPrime))
# countedPrimes += 1
# if countedPrimes == d:
# break
# currentPrime = next_prime(currentPrime)
# return result
# def get_quadratic_character_base(f, lenQuadCharBase, d, algFactorBase):
# usedPrimes = set()
# result = []
# currentPrime = 2
# for i in range(len(algFactorBase)):
# usedPrimes.add(algFactorBase[i][1])
# while len(result) < lenQuadCharBase:
# countedPrimes = 0
# for s in range(currentPrime + 1):
# if currentPrime in usedPrimes:
# break
# if use_funct(f, s, currentPrime) % currentPrime == 0 and countedPrimes <= d:
# result.append((s, currentPrime))
# countedPrimes += 1
# if countedPrimes == d:
# break
# currentPrime = next_prime(currentPrime)
# return result
然后计算素因子基,代数因子基,计算 quadratic characters
# 然后计算素因子基,代数因子基,计算 quadratic characters
ratFactorBase = get_rational_factor_base(ubRatFactorBase)
algFactorBase = get_algebraic_factor_base(f, ubAlgFactorBase, d)
quadCharBase = get_quadratic_character_base(f, ubQuadCharBase, d, algFactorBase)
print(f'Rational Factor Base: {ratFactorBase}')
print(f'Algebraic Factor Base: {algFactorBase}')
print(f'Quadratic Character Base: {quadCharBase}')
Rational Factor Base: [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151, 157, 163, 167, 173, 179, 181, 191, 193, 197, 199, 211, 223, 227, 229, 233, 239, 241, 251, 257, 263, 269, 271, 277, 281, 283, 293, 307, 311, 313, 317, 331, 337, 347, 349, 353, 359, 367, 373, 379, 383, 389, 397, 401, 409, 419, 421, 431, 433, 439, 443, 449, 457, 461, 463, 467, 479, 487, 491, 499, 503, 509, 521, 523, 541, 547, 557, 563, 569, 571, 577, 587, 593, 599, 601, 607, 613, 617, 619, 631, 641, 643, 647, 653, 659, 661, 673, 677, 683, 691, 701, 709, 719, 727, 733, 739, 743, 751, 757, 761, 769, 773, 787, 797, 809, 811, 821, 823, 827, 829, 839, 853, 857, 859, 863, 877, 881, 883, 887, 907, 911, 919, 929, 937, 941, 947, 953, 967, 971, 977, 983, 991, 997, 1009, 1013, 1019, 1021, 1031, 1033, 1039, 1049, 1051, 1061, 1063, 1069, 1087, 1091, 1093, 1097, 1103, 1109, 1117, 1123, 1129, 1151, 1153, 1163, 1171, 1181, 1187, 1193, 1201, 1213, 1217, 1223, 1229, 1231, 1237, 1249, 1259, 1277, 1279, 1283, 1289, 1291, 1297, 1301, 1303, 1307, 1319, 1321, 1327, 1361, 1367, 1373, 1381, 1399, 1409, 1423, 1427, 1429, 1433, 1439, 1447, 1451, 1453, 1459, 1471, 1481, 1483, 1487, 1489, 1493, 1499, 1511, 1523, 1531, 1543, 1549, 1553, 1559, 1567, 1571, 1579, 1583, 1597, 1601, 1607, 1609, 1613, 1619, 1621, 1627, 1637, 1657, 1663, 1667, 1669, 1693, 1697, 1699, 1709, 1721, 1723, 1733, 1741, 1747, 1753, 1759, 1777, 1783, 1787, 1789, 1801, 1811, 1823, 1831, 1847, 1861, 1867, 1871, 1873, 1877, 1879, 1889, 1901, 1907, 1913, 1931, 1933, 1949, 1951, 1973, 1979, 1987, 1993, 1997, 1999, 2003, 2011, 2017, 2027, 2029, 2039, 2053, 2063, 2069, 2081, 2083, 2087, 2089, 2099, 2111, 2113, 2129, 2131, 2137, 2141, 2143, 2153, 2161, 2179, 2203, 2207, 2213, 2221, 2237, 2239, 2243, 2251, 2267, 2269, 2273, 2281, 2287, 2293, 2297, 2309, 2311, 2333, 2339, 2341, 2347, 2351, 2357, 2371, 2377, 2381, 2383, 2389, 2393, 2399, 2411, 2417, 2423, 2437, 2441, 2447, 2459, 2467, 2473, 2477, 2503, 2521, 2531, 2539, 2543, 2549, 2551, 2557, 2579, 2591, 2593, 2609, 2617, 2621, 2633, 2647, 2657, 2659, 2663, 2671, 2677, 2683, 2687, 2689, 2693, 2699, 2707, 2711, 2713, 2719, 2729, 2731, 2741, 2749, 2753, 2767, 2777, 2789, 2791, 2797, 2801, 2803, 2819, 2833, 2837, 2843, 2851, 2857, 2861, 2879, 2887, 2897, 2903, 2909, 2917, 2927, 2939, 2953, 2957, 2963, 2969, 2971, 2999, 3001, 3011, 3019, 3023, 3037, 3041, 3049, 3061, 3067, 3079, 3083, 3089, 3109, 3119, 3121, 3137, 3163, 3167, 3169, 3181, 3187, 3191, 3203, 3209, 3217, 3221, 3229, 3251, 3253, 3257, 3259, 3271, 3299, 3301, 3307, 3313, 3319, 3323, 3329, 3331, 3343, 3347, 3359, 3361, 3371, 3373, 3389, 3391, 3407, 3413, 3433, 3449, 3457, 3461, 3463, 3467, 3469, 3491, 3499, 3511, 3517, 3527, 3529, 3533, 3539, 3541, 3547, 3557, 3559, 3571, 3581, 3583, 3593, 3607, 3613, 3617, 3623, 3631, 3637, 3643, 3659, 3671, 3673, 3677, 3691, 3697, 3701, 3709, 3719, 3727, 3733, 3739, 3761, 3767, 3769, 3779, 3793, 3797, 3803, 3821, 3823, 3833, 3847, 3851, 3853, 3863, 3877, 3881, 3889, 3907, 3911, 3917, 3919, 3923, 3929, 3931, 3943, 3947, 3967, 3989, 4001, 4003, 4007, 4013, 4019, 4021, 4027, 4049, 4051, 4057, 4073, 4079, 4091, 4093, 4099, 4111, 4127, 4129, 4133, 4139, 4153, 4157, 4159, 4177, 4201, 4211, 4217, 4219, 4229, 4231, 4241, 4243, 4253, 4259, 4261, 4271, 4273, 4283, 4289, 4297, 4327, 4337, 4339, 4349, 4357, 4363, 4373, 4391, 4397, 4409, 4421, 4423, 4441, 4447, 4451, 4457, 4463, 4481, 4483, 4493, 4507, 4513, 4517, 4519, 4523, 4547, 4549, 4561, 4567, 4583, 4591, 4597, 4603, 4621, 4637, 4639, 4643, 4649, 4651, 4657, 4663, 4673, 4679, 4691, 4703, 4721, 4723, 4729, 4733, 4751, 4759, 4783, 4787, 4789, 4793, 4799, 4801, 4813, 4817, 4831, 4861, 4871, 4877, 4889, 4903, 4909, 4919, 4931, 4933, 4937, 4943, 4951, 4957, 4967, 4969, 4973, 4987, 4993, 4999, 5003, 5009, 5011, 5021, 5023, 5039, 5051, 5059, 5077, 5081, 5087, 5099, 5101, 5107, 5113, 5119, 5147, 5153, 5167, 5171, 5179, 5189, 5197, 5209, 5227, 5231, 5233, 5237, 5261, 5273, 5279, 5281, 5297, 5303, 5309, 5323, 5333, 5347, 5351, 5381, 5387, 5393, 5399, 5407, 5413, 5417, 5419, 5431, 5437, 5441, 5443, 5449, 5471, 5477, 5479, 5483, 5501, 5503, 5507, 5519, 5521, 5527, 5531, 5557, 5563, 5569, 5573, 5581, 5591, 5623, 5639, 5641, 5647, 5651, 5653, 5657, 5659, 5669, 5683, 5689, 5693, 5701, 5711, 5717, 5737, 5741, 5743, 5749, 5779, 5783, 5791, 5801, 5807, 5813, 5821, 5827, 5839, 5843, 5849, 5851, 5857, 5861, 5867, 5869, 5879, 5881, 5897, 5903, 5923, 5927, 5939, 5953, 5981, 5987, 6007, 6011, 6029, 6037, 6043, 6047, 6053, 6067, 6073, 6079, 6089, 6091, 6101, 6113, 6121, 6131, 6133, 6143, 6151, 6163, 6173, 6197, 6199, 6203, 6211, 6217, 6221, 6229, 6247, 6257, 6263, 6269, 6271, 6277, 6287, 6299, 6301, 6311, 6317, 6323, 6329, 6337, 6343, 6353, 6359, 6361, 6367, 6373, 6379, 6389, 6397, 6421, 6427, 6449, 6451, 6469, 6473, 6481, 6491, 6521, 6529, 6547, 6551, 6553, 6563, 6569, 6571, 6577, 6581, 6599, 6607, 6619, 6637, 6653, 6659, 6661, 6673, 6679, 6689, 6691, 6701, 6703, 6709, 6719, 6733, 6737, 6761, 6763, 6779, 6781, 6791, 6793, 6803, 6823, 6827, 6829, 6833, 6841, 6857, 6863, 6869, 6871, 6883, 6899, 6907, 6911, 6917, 6947, 6949, 6959, 6961, 6967, 6971, 6977, 6983, 6991, 6997, 7001, 7013, 7019, 7027, 7039, 7043, 7057, 7069, 7079, 7103, 7109, 7121, 7127, 7129, 7151, 7159, 7177, 7187, 7193, 7207, 7211, 7213, 7219, 7229, 7237, 7243, 7247, 7253, 7283, 7297, 7307, 7309, 7321, 7331, 7333, 7349, 7351, 7369, 7393, 7411, 7417, 7433, 7451, 7457, 7459, 7477, 7481, 7487, 7489, 7499, 7507, 7517, 7523, 7529, 7537, 7541, 7547, 7549, 7559, 7561, 7573, 7577, 7583, 7589, 7591, 7603, 7607, 7621, 7639, 7643, 7649, 7669, 7673, 7681, 7687, 7691, 7699, 7703, 7717, 7723, 7727, 7741, 7753, 7757, 7759, 7789, 7793, 7817, 7823, 7829, 7841, 7853, 7867, 7873, 7877, 7879, 7883, 7901, 7907, 7919, 7927, 7933, 7937, 7949, 7951, 7963, 7993, 8009, 8011, 8017, 8039, 8053, 8059, 8069, 8081, 8087, 8089, 8093, 8101, 8111, 8117, 8123, 8147, 8161, 8167, 8171, 8179, 8191, 8209, 8219, 8221, 8231, 8233, 8237, 8243, 8263, 8269, 8273, 8287, 8291, 8293, 8297, 8311, 8317, 8329, 8353, 8363, 8369, 8377, 8387, 8389, 8419, 8423, 8429, 8431, 8443, 8447, 8461, 8467, 8501, 8513, 8521, 8527, 8537, 8539, 8543, 8563, 8573, 8581, 8597, 8599, 8609, 8623, 8627, 8629, 8641, 8647, 8663, 8669, 8677, 8681, 8689, 8693, 8699, 8707, 8713, 8719, 8731, 8737, 8741, 8747, 8753, 8761, 8779, 8783, 8803, 8807, 8819, 8821, 8831, 8837, 8839, 8849, 8861, 8863, 8867, 8887, 8893, 8923, 8929, 8933, 8941, 8951, 8963, 8969, 8971, 8999, 9001, 9007, 9011, 9013, 9029, 9041, 9043, 9049, 9059, 9067, 9091, 9103, 9109, 9127, 9133, 9137, 9151, 9157, 9161, 9173, 9181, 9187, 9199, 9203, 9209, 9221, 9227, 9239, 9241, 9257, 9277, 9281, 9283, 9293, 9311, 9319, 9323, 9337, 9341, 9343, 9349, 9371, 9377, 9391, 9397, 9403, 9413, 9419, 9421, 9431, 9433, 9437, 9439, 9461, 9463, 9467, 9473, 9479, 9491, 9497, 9511, 9521, 9533, 9539, 9547, 9551, 9587, 9601, 9613, 9619, 9623, 9629, 9631, 9643, 9649, 9661, 9677, 9679, 9689, 9697, 9719, 9721, 9733, 9739, 9743, 9749, 9767, 9769, 9781, 9787, 9791, 9803, 9811, 9817, 9829, 9833, 9839, 9851, 9857, 9859, 9871, 9883, 9887, 9901, 9907, 9923, 9929, 9931, 9941, 9949, 9967, 9973, 10007, 10009, 10037, 10039, 10061, 10067, 10069, 10079, 10091, 10093, 10099, 10103, 10111, 10133, 10139, 10141, 10151, 10159, 10163, 10169, 10177, 10181, 10193, 10211, 10223, 10243, 10247, 10253, 10259, 10267, 10271, 10273, 10289, 10301, 10303, 10313, 10321, 10331, 10333, 10337, 10343, 10357, 10369, 10391, 10399, 10427, 10429, 10433, 10453, 10457, 10459, 10463, 10477, 10487, 10499, 10501, 10513, 10529, 10531, 10559, 10567, 10589, 10597, 10601, 10607, 10613, 10627, 10631, 10639, 10651, 10657, 10663, 10667, 10687, 10691, 10709, 10711, 10723, 10729, 10733, 10739, 10753, 10771, 10781, 10789, 10799, 10831, 10837, 10847, 10853, 10859, 10861, 10867, 10883, 10889, 10891, 10903, 10909, 10937, 10939, 10949, 10957, 10973, 10979, 10987, 10993, 11003, 11027, 11047, 11057, 11059, 11069, 11071, 11083, 11087, 11093, 11113, 11117, 11119, 11131, 11149, 11159, 11161, 11171, 11173, 11177, 11197, 11213, 11239, 11243, 11251, 11257, 11261, 11273, 11279, 11287, 11299, 11311, 11317, 11321, 11329, 11351, 11353, 11369, 11383, 11393, 11399, 11411, 11423, 11437, 11443, 11447, 11467, 11471, 11483, 11489, 11491, 11497, 11503, 11519, 11527, 11549, 11551, 11579, 11587, 11593, 11597, 11617, 11621, 11633, 11657, 11677, 11681, 11689, 11699, 11701, 11717, 11719, 11731, 11743, 11777, 11779, 11783, 11789, 11801, 11807, 11813, 11821, 11827, 11831, 11833, 11839, 11863, 11867, 11887, 11897, 11903, 11909, 11923, 11927, 11933, 11939, 11941, 11953, 11959, 11969, 11971, 11981, 11987, 12007, 12011, 12037, 12041, 12043, 12049, 12071, 12073, 12097, 12101, 12107, 12109, 12113, 12119, 12143, 12149, 12157, 12161, 12163, 12197, 12203, 12211, 12227, 12239, 12241, 12251, 12253, 12263, 12269, 12277, 12281, 12289, 12301, 12323, 12329, 12343, 12347, 12373, 12377, 12379, 12391, 12401, 12409, 12413, 12421, 12433, 12437, 12451, 12457, 12473, 12479, 12487, 12491, 12497, 12503, 12511, 12517, 12527, 12539, 12541, 12547, 12553, 12569, 12577, 12583, 12589, 12601, 12611, 12613, 12619, 12637, 12641, 12647, 12653, 12659, 12671, 12689, 12697, 12703, 12713, 12721, 12739, 12743, 12757, 12763, 12781, 12791, 12799, 12809, 12821, 12823, 12829, 12841, 12853, 12889, 12893, 12899, 12907, 12911, 12917, 12919, 12923, 12941, 12953, 12959, 12967, 12973, 12979, 12983, 13001, 13003, 13007, 13009, 13033, 13037, 13043, 13049, 13063, 13093, 13099, 13103, 13109, 13121, 13127, 13147, 13151, 13159, 13163, 13171, 13177, 13183, 13187, 13217, 13219, 13229, 13241, 13249, 13259, 13267, 13291, 13297, 13309, 13313, 13327, 13331, 13337, 13339, 13367, 13381, 13397, 13399, 13411, 13417, 13421, 13441, 13451, 13457, 13463, 13469, 13477, 13487, 13499, 13513, 13523, 13537, 13553, 13567, 13577, 13591, 13597, 13613, 13619, 13627, 13633, 13649, 13669, 13679, 13681, 13687, 13691, 13693, 13697, 13709, 13711, 13721, 13723, 13729, 13751, 13757, 13759, 13763, 13781, 13789, 13799, 13807, 13829, 13831, 13841, 13859, 13873, 13877, 13879, 13883, 13901, 13903, 13907, 13913, 13921, 13931, 13933, 13963, 13967, 13997, 13999, 14009, 14011, 14029, 14033, 14051, 14057, 14071, 14081, 14083, 14087, 14107, 14143, 14149, 14153, 14159, 14173, 14177, 14197, 14207, 14221, 14243, 14249, 14251, 14281, 14293, 14303, 14321, 14323, 14327, 14341, 14347, 14369, 14387, 14389, 14401, 14407, 14411, 14419, 14423, 14431, 14437, 14447, 14449, 14461, 14479, 14489, 14503, 14519, 14533, 14537, 14543, 14549, 14551, 14557, 14561, 14563, 14591, 14593, 14621, 14627, 14629, 14633, 14639, 14653, 14657, 14669, 14683, 14699, 14713, 14717, 14723, 14731, 14737, 14741, 14747, 14753, 14759, 14767, 14771, 14779, 14783, 14797, 14813, 14821, 14827, 14831, 14843, 14851, 14867, 14869, 14879, 14887, 14891, 14897, 14923, 14929, 14939, 14947, 14951, 14957, 14969, 14983, 15013, 15017, 15031, 15053, 15061, 15073, 15077, 15083, 15091, 15101, 15107, 15121, 15131, 15137, 15139, 15149, 15161, 15173, 15187, 15193, 15199, 15217, 15227, 15233, 15241, 15259, 15263, 15269, 15271, 15277, 15287, 15289, 15299, 15307, 15313, 15319, 15329, 15331, 15349, 15359, 15361, 15373, 15377, 15383, 15391, 15401, 15413, 15427, 15439, 15443, 15451, 15461, 15467, 15473, 15493, 15497, 15511, 15527, 15541, 15551, 15559, 15569, 15581, 15583, 15601, 15607, 15619, 15629, 15641, 15643, 15647, 15649, 15661, 15667, 15671, 15679, 15683, 15727, 15731, 15733, 15737, 15739, 15749, 15761, 15767, 15773, 15787, 15791, 15797, 15803, 15809, 15817, 15823, 15859, 15877, 15881, 15887, 15889, 15901, 15907, 15913, 15919, 15923, 15937, 15959, 15971, 15973, 15991, 16001, 16007, 16033, 16057, 16061, 16063, 16067, 16069, 16073, 16087, 16091, 16097, 16103, 16111, 16127, 16139, 16141, 16183, 16187, 16189, 16193, 16217, 16223, 16229, 16231, 16249, 16253, 16267, 16273, 16301, 16319, 16333, 16339, 16349, 16361, 16363, 16369, 16381, 16411, 16417, 16421, 16427, 16433, 16447, 16451, 16453, 16477, 16481, 16487, 16493, 16519, 16529, 16547, 16553, 16561, 16567, 16573, 16603, 16607, 16619, 16631, 16633, 16649, 16651, 16657, 16661, 16673, 16691, 16693, 16699, 16703, 16729, 16741, 16747, 16759, 16763, 16787, 16811, 16823, 16829, 16831, 16843, 16871, 16879, 16883, 16889, 16901, 16903, 16921, 16927, 16931, 16937, 16943, 16963, 16979, 16981, 16987, 16993, 17011, 17021, 17027, 17029, 17033, 17041, 17047, 17053, 17077, 17093, 17099, 17107, 17117, 17123, 17137, 17159, 17167, 17183, 17189, 17191, 17203, 17207, 17209, 17231, 17239, 17257, 17291, 17293, 17299, 17317, 17321, 17327, 17333, 17341, 17351, 17359, 17377, 17383, 17387, 17389, 17393, 17401, 17417, 17419, 17431, 17443, 17449, 17467, 17471, 17477, 17483, 17489, 17491, 17497, 17509, 17519, 17539, 17551, 17569, 17573, 17579, 17581, 17597, 17599, 17609, 17623, 17627, 17657, 17659, 17669, 17681, 17683, 17707, 17713, 17729, 17737, 17747, 17749, 17761, 17783, 17789, 17791, 17807, 17827, 17837, 17839, 17851, 17863, 17881, 17891, 17903, 17909, 17911, 17921, 17923, 17929, 17939, 17957, 17959, 17971, 17977, 17981, 17987, 17989, 18013, 18041, 18043, 18047, 18049, 18059, 18061, 18077, 18089, 18097, 18119, 18121, 18127, 18131, 18133, 18143, 18149, 18169, 18181, 18191, 18199, 18211, 18217, 18223, 18229, 18233, 18251, 18253, 18257, 18269, 18287, 18289, 18301, 18307, 18311, 18313, 18329, 18341, 18353, 18367, 18371, 18379, 18397, 18401, 18413, 18427, 18433, 18439, 18443, 18451, 18457, 18461, 18481, 18493, 18503, 18517, 18521, 18523, 18539, 18541, 18553, 18583, 18587, 18593, 18617, 18637, 18661, 18671, 18679, 18691, 18701, 18713, 18719, 18731, 18743, 18749, 18757, 18773, 18787, 18793, 18797, 18803, 18839, 18859, 18869, 18899, 18911, 18913, 18917, 18919, 18947, 18959, 18973, 18979, 19001, 19009, 19013, 19031, 19037, 19051, 19069, 19073, 19079, 19081, 19087, 19121, 19139, 19141, 19157, 19163, 19181, 19183, 19207, 19211, 19213, 19219, 19231, 19237, 19249, 19259, 19267, 19273, 19289, 19301, 19309, 19319, 19333, 19373, 19379, 19381, 19387, 19391, 19403, 19417, 19421, 19423, 19427, 19429, 19433, 19441, 19447, 19457, 19463, 19469, 19471, 19477, 19483, 19489, 19501, 19507, 19531, 19541, 19543, 19553, 19559, 19571, 19577, 19583, 19597, 19603, 19609, 19661, 19681, 19687, 19697, 19699, 19709, 19717, 19727, 19739, 19751, 19753, 19759, 19763, 19777, 19793, 19801, 19813, 19819, 19841, 19843, 19853, 19861, 19867, 19889, 19891, 19913, 19919, 19927, 19937, 19949, 19961, 19963, 19973, 19979, 19991, 19993, 19997, 20011, 20021, 20023, 20029, 20047, 20051, 20063, 20071, 20089, 20101, 20107, 20113, 20117, 20123, 20129, 20143, 20147, 20149, 20161, 20173, 20177, 20183, 20201, 20219, 20231, 20233, 20249, 20261, 20269, 20287, 20297, 20323, 20327, 20333, 20341, 20347, 20353, 20357, 20359, 20369, 20389, 20393, 20399, 20407, 20411, 20431, 20441, 20443, 20477, 20479, 20483, 20507, 20509, 20521, 20533, 20543, 20549, 20551, 20563, 20593, 20599, 20611, 20627, 20639, 20641, 20663, 20681, 20693, 20707, 20717, 20719, 20731, 20743, 20747, 20749, 20753, 20759, 20771, 20773, 20789, 20807, 20809, 20849, 20857, 20873, 20879, 20887, 20897, 20899, 20903, 20921, 20929, 20939, 20947, 20959, 20963, 20981, 20983, 21001, 21011, 21013, 21017, 21019, 21023, 21031, 21059, 21061, 21067, 21089, 21101, 21107, 21121, 21139, 21143, 21149, 21157, 21163, 21169, 21179, 21187, 21191, 21193, 21211, 21221, 21227, 21247, 21269, 21277, 21283, 21313, 21317, 21319, 21323, 21341, 21347, 21377, 21379, 21383, 21391, 21397, 21401, 21407, 21419, 21433, 21467, 21481, 21487, 21491, 21493, 21499, 21503, 21517, 21521, 21523, 21529, 21557, 21559, 21563, 21569, 21577, 21587, 21589, 21599, 21601, 21611, 21613, 21617, 21647, 21649, 21661, 21673, 21683, 21701, 21713, 21727, 21737, 21739, 21751, 21757, 21767, 21773, 21787, 21799, 21803, 21817, 21821, 21839, 21841, 21851, 21859, 21863, 21871, 21881, 21893, 21911, 21929, 21937, 21943, 21961, 21977, 21991, 21997, 22003, 22013, 22027, 22031, 22037, 22039, 22051, 22063, 22067, 22073, 22079, 22091, 22093, 22109, 22111, 22123, 22129, 22133, 22147, 22153, 22157, 22159, 22171, 22189, 22193, 22229, 22247, 22259, 22271, 22273, 22277, 22279, 22283, 22291, 22303, 22307, 22343, 22349, 22367, 22369, 22381, 22391, 22397, 22409, 22433, 22441, 22447, 22453, 22469, 22481, 22483, 22501, 22511, 22531, 22541, 22543, 22549, 22567, 22571, 22573, 22613, 22619, 22621, 22637, 22639, 22643, 22651, 22669, 22679, 22691, 22697, 22699, 22709, 22717, 22721, 22727, 22739, 22741, 22751, 22769, 22777, 22783, 22787, 22807, 22811, 22817, 22853, 22859, 22861, 22871, 22877, 22901, 22907, 22921, 22937, 22943, 22961, 22963, 22973, 22993, 23003, 23011, 23017, 23021, 23027, 23029, 23039, 23041, 23053, 23057, 23059, 23063, 23071, 23081, 23087, 23099, 23117, 23131, 23143, 23159, 23167, 23173, 23189, 23197, 23201, 23203, 23209, 23227, 23251, 23269, 23279, 23291, 23293, 23297, 23311, 23321, 23327, 23333, 23339, 23357, 23369, 23371, 23399, 23417, 23431, 23447, 23459, 23473, 23497, 23509, 23531, 23537, 23539, 23549, 23557, 23561, 23563, 23567, 23581, 23593, 23599, 23603, 23609, 23623, 23627, 23629, 23633, 23663, 23669, 23671, 23677, 23687, 23689, 23719, 23741, 23743, 23747, 23753, 23761, 23767, 23773, 23789, 23801, 23813, 23819, 23827, 23831, 23833, 23857, 23869, 23873, 23879, 23887, 23893, 23899, 23909, 23911, 23917, 23929, 23957, 23971, 23977, 23981, 23993, 24001, 24007, 24019, 24023, 24029, 24043, 24049, 24061, 24071, 24077, 24083, 24091, 24097, 24103, 24107, 24109, 24113, 24121, 24133, 24137, 24151, 24169, 24179, 24181, 24197, 24203, 24223, 24229, 24239, 24247, 24251, 24281, 24317, 24329, 24337, 24359, 24371, 24373, 24379, 24391, 24407, 24413, 24419, 24421, 24439, 24443, 24469, 24473, 24481, 24499, 24509, 24517, 24527, 24533, 24547, 24551, 24571, 24593, 24611, 24623, 24631, 24659, 24671, 24677, 24683, 24691, 24697, 24709, 24733, 24749, 24763, 24767, 24781, 24793, 24799, 24809, 24821, 24841, 24847, 24851, 24859, 24877, 24889, 24907, 24917, 24919, 24923, 24943, 24953, 24967, 24971, 24977, 24979, 24989, 25013, 25031, 25033, 25037, 25057, 25073, 25087, 25097, 25111, 25117, 25121, 25127, 25147, 25153, 25163, 25169, 25171, 25183, 25189, 25219, 25229, 25237, 25243, 25247, 25253, 25261, 25301, 25303, 25307, 25309, 25321, 25339, 25343, 25349, 25357, 25367, 25373, 25391, 25409, 25411, 25423, 25439, 25447, 25453, 25457, 25463, 25469, 25471, 25523, 25537, 25541, 25561, 25577, 25579, 25583, 25589, 25601, 25603, 25609, 25621, 25633, 25639, 25643, 25657, 25667, 25673, 25679, 25693, 25703, 25717, 25733, 25741, 25747, 25759, 25763, 25771, 25793, 25799, 25801, 25819, 25841, 25847, 25849, 25867, 25873, 25889, 25903, 25913, 25919, 25931, 25933, 25939, 25943, 25951, 25969, 25981, 25997, 25999, 26003, 26017, 26021, 26029, 26041, 26053, 26083, 26099, 26107, 26111, 26113, 26119, 26141, 26153, 26161, 26171, 26177, 26183, 26189, 26203, 26209, 26227, 26237, 26249, 26251, 26261, 26263, 26267, 26293, 26297, 26309, 26317, 26321, 26339, 26347, 26357, 26371, 26387, 26393, 26399, 26407, 26417, 26423, 26431, 26437, 26449, 26459, 26479, 26489, 26497, 26501, 26513, 26539, 26557, 26561, 26573, 26591, 26597, 26627, 26633, 26641, 26647, 26669, 26681, 26683, 26687, 26693, 26699, 26701, 26711, 26713, 26717, 26723, 26729, 26731, 26737, 26759, 26777, 26783, 26801, 26813, 26821, 26833, 26839, 26849, 26861, 26863, 26879, 26881, 26891, 26893, 26903, 26921, 26927, 26947, 26951, 26953, 26959, 26981, 26987, 26993, 27011, 27017, 27031, 27043, 27059, 27061, 27067, 27073, 27077, 27091, 27103, 27107, 27109, 27127, 27143, 27179, 27191, 27197, 27211, 27239, 27241, 27253, 27259, 27271, 27277, 27281, 27283, 27299, 27329, 27337, 27361, 27367, 27397, 27407, 27409, 27427, 27431, 27437, 27449, 27457, 27479, 27481, 27487, 27509, 27527, 27529, 27539, 27541, 27551, 27581, 27583, 27611, 27617, 27631, 27647, 27653, 27673, 27689, 27691, 27697, 27701, 27733, 27737, 27739, 27743, 27749, 27751, 27763, 27767, 27773, 27779, 27791, 27793, 27799, 27803, 27809, 27817, 27823, 27827, 27847, 27851, 27883, 27893, 27901, 27917, 27919, 27941, 27943, 27947, 27953, 27961, 27967, 27983, 27997, 28001, 28019, 28027, 28031, 28051, 28057, 28069, 28081, 28087, 28097, 28099, 28109, 28111, 28123, 28151, 28163, 28181, 28183, 28201, 28211, 28219, 28229, 28277, 28279, 28283, 28289, 28297, 28307, 28309, 28319, 28349, 28351, 28387, 28393, 28403, 28409, 28411, 28429, 28433, 28439, 28447, 28463, 28477, 28493, 28499, 28513, 28517, 28537, 28541, 28547, 28549, 28559, 28571, 28573, 28579, 28591, 28597, 28603, 28607, 28619, 28621, 28627, 28631, 28643, 28649, 28657, 28661, 28663, 28669, 28687, 28697, 28703, 28711, 28723, 28729, 28751, 28753, 28759, 28771, 28789, 28793, 28807, 28813, 28817, 28837, 28843, 28859, 28867, 28871, 28879, 28901, 28909, 28921, 28927, 28933, 28949, 28961, 28979, 29009, 29017, 29021, 29023, 29027, 29033, 29059, 29063, 29077, 29101, 29123, 29129, 29131, 29137, 29147, 29153, 29167, 29173, 29179, 29191, 29201, 29207, 29209, 29221, 29231, 29243, 29251, 29269, 29287, 29297, 29303, 29311, 29327, 29333, 29339, 29347, 29363, 29383, 29387, 29389, 29399, 29401, 29411, 29423, 29429, 29437, 29443, 29453, 29473, 29483, 29501, 29527, 29531, 29537, 29567, 29569, 29573, 29581, 29587, 29599, 29611, 29629, 29633, 29641, 29663, 29669, 29671, 29683, 29717, 29723, 29741, 29753, 29759, 29761, 29789, 29803, 29819, 29833, 29837, 29851, 29863, 29867, 29873, 29879, 29881, 29917, 29921, 29927, 29947, 29959, 29983, 29989, 30011, 30013, 30029, 30047, 30059, 30071, 30089, 30091, 30097, 30103, 30109, 30113, 30119, 30133, 30137, 30139, 30161, 30169, 30181, 30187, 30197, 30203, 30211, 30223, 30241, 30253, 30259, 30269, 30271, 30293, 30307, 30313, 30319, 30323, 30341, 30347, 30367, 30389, 30391, 30403, 30427, 30431, 30449, 30467, 30469, 30491, 30493, 30497, 30509, 30517, 30529, 30539, 30553, 30557, 30559, 30577, 30593, 30631, 30637, 30643, 30649, 30661, 30671, 30677, 30689, 30697, 30703, 30707, 30713, 30727, 30757, 30763, 30773, 30781, 30803, 30809, 30817, 30829, 30839, 30841, 30851, 30853, 30859, 30869, 30871, 30881, 30893, 30911, 30931, 30937, 30941, 30949, 30971, 30977, 30983, 31013, 31019, 31033, 31039, 31051, 31063, 31069, 31079, 31081, 31091, 31121, 31123, 31139, 31147, 31151, 31153, 31159, 31177, 31181, 31183, 31189, 31193, 31219, 31223, 31231, 31237, 31247, 31249, 31253, 31259, 31267, 31271, 31277, 31307, 31319, 31321, 31327, 31333, 31337, 31357, 31379, 31387, 31391, 31393, 31397, 31469, 31477, 31481, 31489, 31511, 31513, 31517, 31531, 31541, 31543, 31547, 31567, 31573, 31583, 31601, 31607, 31627, 31643, 31649, 31657, 31663, 31667, 31687, 31699, 31721, 31723, 31727, 31729, 31741, 31751, 31769, 31771, 31793, 31799, 31817, 31847, 31849, 31859, 31873, 31883, 31891, 31907, 31957, 31963, 31973, 31981, 31991, 32003, 32009, 32027, 32029, 32051, 32057, 32059, 32063, 32069, 32077, 32083, 32089, 32099, 32117, 32119, 32141, 32143, 32159, 32173, 32183, 32189, 32191, 32203, 32213, 32233, 32237, 32251, 32257, 32261, 32297, 32299, 32303, 32309, 32321, 32323, 32327, 32341, 32353, 32359, 32363, 32369, 32371, 32377, 32381, 32401, 32411, 32413, 32423, 32429, 32441, 32443, 32467, 32479, 32491, 32497, 32503, 32507, 32531, 32533, 32537, 32561, 32563, 32569, 32573, 32579, 32587, 32603, 32609, 32611, 32621, 32633, 32647, 32653, 32687, 32693, 32707, 32713, 32717, 32719, 32749, 32771, 32779, 32783, 32789, 32797, 32801, 32803, 32831, 32833, 32839, 32843, 32869, 32887, 32909, 32911, 32917, 32933, 32939, 32941, 32957, 32969, 32971, 32983, 32987, 32993, 32999, 33013, 33023, 33029, 33037, 33049, 33053, 33071, 33073, 33083, 33091, 33107, 33113, 33119, 33149, 33151, 33161, 33179, 33181, 33191, 33199, 33203, 33211, 33223, 33247, 33287, 33289, 33301, 33311, 33317, 33329, 33331, 33343, 33347, 33349, 33353, 33359, 33377, 33391, 33403, 33409, 33413, 33427, 33457, 33461, 33469, 33479, 33487, 33493, 33503, 33521, 33529, 33533, 33547, 33563, 33569, 33577, 33581, 33587, 33589, 33599, 33601, 33613, 33617, 33619, 33623, 33629, 33637, 33641, 33647, 33679, 33703, 33713, 33721, 33739, 33749, 33751, 33757, 33767, 33769, 33773, 33791, 33797, 33809, 33811, 33827, 33829, 33851, 33857, 33863, 33871, 33889, 33893, 33911, 33923, 33931, 33937, 33941, 33961, 33967, 33997, 34019, 34031, 34033, 34039, 34057, 34061, 34123, 34127, 34129, 34141, 34147, 34157, 34159, 34171, 34183, 34211, 34213, 34217, 34231, 34253, 34259, 34261, 34267, 34273, 34283, 34297, 34301, 34303, 34313, 34319, 34327, 34337, 34351, 34361, 34367, 34369, 34381, 34403, 34421, 34429, 34439, 34457, 34469, 34471, 34483, 34487, 34499, 34501, 34511, 34513, 34519, 34537, 34543, 34549, 34583, 34589, 34591, 34603, 34607, 34613, 34631, 34649, 34651, 34667, 34673, 34679, 34687, 34693, 34703, 34721, 34729, 34739, 34747, 34757, 34759, 34763, 34781, 34807, 34819, 34841, 34843, 34847, 34849, 34871, 34877, 34883, 34897, 34913, 34919, 34939, 34949, 34961, 34963, 34981, 35023, 35027, 35051, 35053, 35059, 35069, 35081, 35083, 35089, 35099, 35107, 35111, 35117, 35129, 35141, 35149, 35153, 35159, 35171, 35201, 35221, 35227, 35251, 35257, 35267, 35279, 35281, 35291, 35311, 35317, 35323, 35327, 35339, 35353, 35363, 35381, 35393, 35401, 35407, 35419, 35423, 35437, 35447, 35449, 35461, 35491, 35507, 35509, 35521, 35527, 35531, 35533, 35537, 35543, 35569, 35573, 35591, 35593, 35597, 35603, 35617, 35671, 35677, 35729, 35731, 35747, 35753, 35759, 35771, 35797, 35801, 35803, 35809, 35831, 35837, 35839, 35851, 35863, 35869, 35879, 35897, 35899, 35911, 35923, 35933, 35951, 35963, 35969, 35977, 35983, 35993, 35999, 36007, 36011, 36013, 36017, 36037, 36061, 36067, 36073, 36083, 36097, 36107, 36109, 36131, 36137, 36151, 36161, 36187, 36191, 36209, 36217, 36229, 36241, 36251, 36263, 36269, 36277, 36293, 36299, 36307, 36313, 36319, 36341, 36343, 36353, 36373, 36383, 36389, 36433, 36451, 36457, 36467, 36469, 36473, 36479, 36493, 36497, 36523, 36527, 36529, 36541, 36551, 36559, 36563, 36571, 36583, 36587, 36599, 36607, 36629, 36637, 36643, 36653, 36671, 36677, 36683, 36691, 36697, 36709, 36713, 36721, 36739, 36749, 36761, 36767, 36779, 36781, 36787, 36791, 36793, 36809, 36821, 36833, 36847, 36857, 36871, 36877, 36887, 36899, 36901, 36913, 36919, 36923, 36929, 36931, 36943, 36947, 36973, 36979, 36997, 37003, 37013, 37019, 37021, 37039, 37049, 37057, 37061, 37087, 37097, 37117, 37123, 37139, 37159, 37171, 37181, 37189, 37199, 37201, 37217, 37223, 37243, 37253, 37273, 37277, 37307, 37309, 37313, 37321, 37337, 37339, 37357, 37361, 37363, 37369, 37379, 37397, 37409, 37423, 37441, 37447, 37463, 37483, 37489, 37493, 37501, 37507, 37511, 37517, 37529, 37537, 37547, 37549, 37561, 37567, 37571, 37573, 37579, 37589, 37591, 37607, 37619, 37633, 37643, 37649, 37657, 37663, 37691, 37693, 37699, 37717, 37747, 37781, 37783, 37799, 37811, 37813, 37831, 37847, 37853, 37861, 37871, 37879, 37889, 37897, 37907, 37951, 37957, 37963, 37967, 37987, 37991, 37993, 37997, 38011, 38039, 38047, 38053, 38069, 38083, 38113, 38119, 38149, 38153, 38167, 38177, 38183, 38189, 38197, 38201, 38219, 38231, 38237, 38239, 38261, 38273, 38281, 38287, 38299, 38303, 38317, 38321, 38327, 38329, 38333, 38351, 38371, 38377, 38393, 38431, 38447, 38449, 38453, 38459, 38461, 38501, 38543, 38557, 38561, 38567, 38569, 38593, 38603, 38609, 38611, 38629, 38639, 38651, 38653, 38669, 38671, 38677, 38693, 38699, 38707, 38711, 38713, 38723, 38729, 38737, 38747, 38749, 38767, 38783, 38791, 38803, 38821, 38833, 38839, 38851, 38861, 38867, 38873, 38891, 38903, 38917, 38921, 38923, 38933, 38953, 38959, 38971, 38977, 38993, 39019, 39023, 39041, 39043, 39047, 39079, 39089, 39097, 39103, 39107, 39113, 39119, 39133, 39139, 39157, 39161, 39163, 39181, 39191, 39199, 39209, 39217, 39227, 39229, 39233, 39239, 39241, 39251, 39293, 39301, 39313, 39317, 39323, 39341, 39343, 39359, 39367, 39371, 39373, 39383, 39397, 39409, 39419, 39439, 39443, 39451, 39461, 39499, 39503, 39509, 39511, 39521, 39541, 39551, 39563, 39569, 39581, 39607, 39619, 39623, 39631, 39659, 39667, 39671, 39679, 39703, 39709, 39719, 39727, 39733, 39749, 39761, 39769, 39779, 39791, 39799, 39821, 39827, 39829, 39839, 39841, 39847, 39857, 39863, 39869, 39877, 39883, 39887, 39901, 39929, 39937, 39953, 39971, 39979, 39983, 39989, 40009, 40013, 40031, 40037, 40039, 40063, 40087, 40093, 40099, 40111, 40123, 40127, 40129, 40151, 40153, 40163, 40169, 40177, 40189, 40193, 40213, 40231, 40237, 40241, 40253, 40277, 40283, 40289, 40343, 40351, 40357, 40361, 40387, 40423, 40427, 40429, 40433, 40459, 40471, 40483, 40487, 40493, 40499, 40507, 40519, 40529, 40531, 40543, 40559, 40577, 40583, 40591, 40597, 40609, 40627, 40637, 40639, 40693, 40697, 40699, 40709, 40739, 40751, 40759, 40763, 40771, 40787, 40801, 40813, 40819, 40823, 40829, 40841, 40847, 40849, 40853, 40867, 40879, 40883, 40897, 40903, 40927, 40933, 40939, 40949, 40961, 40973, 40993, 41011, 41017, 41023, 41039, 41047, 41051, 41057, 41077, 41081, 41113, 41117, 41131, 41141, 41143, 41149, 41161, 41177, 41179, 41183, 41189, 41201, 41203, 41213, 41221, 41227, 41231, 41233, 41243, 41257, 41263, 41269, 41281, 41299, 41333, 41341, 41351, 41357, 41381, 41387, 41389, 41399, 41411, 41413, 41443, 41453, 41467, 41479, 41491, 41507, 41513, 41519, 41521, 41539, 41543, 41549, 41579, 41593, 41597, 41603, 41609, 41611, 41617, 41621, 41627, 41641, 41647, 41651, 41659, 41669, 41681, 41687, 41719, 41729, 41737, 41759, 41761, 41771, 41777, 41801, 41809, 41813, 41843, 41849, 41851, 41863, 41879, 41887, 41893, 41897, 41903, 41911, 41927, 41941, 41947, 41953, 41957, 41959, 41969, 41981, 41983, 41999, 42013, 42017, 42019, 42023, 42043, 42061, 42071, 42073, 42083, 42089, 42101, 42131, 42139, 42157, 42169, 42179, 42181, 42187, 42193, 42197, 42209, 42221, 42223, 42227, 42239, 42257, 42281, 42283, 42293, 42299, 42307, 42323, 42331, 42337, 42349, 42359, 42373, 42379, 42391, 42397, 42403, 42407, 42409, 42433, 42437, 42443, 42451, 42457, 42461, 42463, 42467, 42473, 42487, 42491, 42499, 42509, 42533, 42557, 42569, 42571, 42577, 42589, 42611, 42641, 42643, 42649, 42667, 42677, 42683, 42689, 42697, 42701, 42703, 42709, 42719, 42727, 42737, 42743, 42751, 42767, 42773, 42787, 42793, 42797, 42821, 42829, 42839, 42841, 42853, 42859, 42863, 42899, 42901, 42923, 42929, 42937, 42943, 42953, 42961, 42967, 42979, 42989, 43003, 43013, 43019, 43037, 43049, 43051, 43063, 43067, 43093, 43103, 43117, 43133, 43151, 43159, 43177, 43189, 43201, 43207, 43223, 43237, 43261, 43271, 43283, 43291, 43313, 43319, 43321, 43331, 43391, 43397, 43399, 43403, 43411, 43427, 43441, 43451, 43457, 43481, 43487, 43499, 43517, 43541, 43543, 43573, 43577, 43579, 43591, 43597, 43607, 43609, 43613, 43627, 43633, 43649, 43651, 43661, 43669, 43691, 43711, 43717, 43721, 43753, 43759, 43777, 43781, 43783, 43787, 43789, 43793, 43801, 43853, 43867, 43889, 43891, 43913, 43933, 43943, 43951, 43961, 43963, 43969, 43973, 43987, 43991, 43997, 44017, 44021, 44027, 44029, 44041, 44053, 44059, 44071, 44087, 44089, 44101, 44111, 44119, 44123, 44129, 44131, 44159, 44171, 44179, 44189, 44201, 44203, 44207, 44221, 44249, 44257, 44263, 44267, 44269, 44273, 44279, 44281, 44293, 44351, 44357, 44371, 44381, 44383, 44389, 44417, 44449, 44453, 44483, 44491, 44497, 44501, 44507, 44519, 44531, 44533, 44537, 44543, 44549, 44563, 44579, 44587, 44617, 44621, 44623, 44633, 44641, 44647, 44651, 44657, 44683, 44687, 44699, 44701, 44711, 44729, 44741, 44753, 44771, 44773, 44777, 44789, 44797, 44809, 44819, 44839, 44843, 44851, 44867, 44879, 44887, 44893, 44909, 44917, 44927, 44939, 44953, 44959, 44963, 44971, 44983, 44987, 45007, 45013, 45053, 45061, 45077, 45083, 45119, 45121, 45127, 45131, 45137, 45139, 45161, 45179, 45181, 45191, 45197, 45233, 45247, 45259, 45263, 45281, 45289, 45293, 45307, 45317, 45319, 45329, 45337, 45341, 45343, 45361, 45377, 45389, 45403, 45413, 45427, 45433, 45439, 45481, 45491, 45497, 45503, 45523, 45533, 45541, 45553, 45557, 45569, 45587, 45589, 45599, 45613, 45631, 45641, 45659, 45667, 45673, 45677, 45691, 45697, 45707, 45737, 45751, 45757, 45763, 45767, 45779, 45817, 45821, 45823, 45827, 45833, 45841, 45853, 45863, 45869, 45887, 45893, 45943, 45949, 45953, 45959, 45971, 45979, 45989, 46021, 46027, 46049, 46051, 46061, 46073, 46091, 46093, 46099, 46103, 46133, 46141, 46147, 46153, 46171, 46181, 46183, 46187, 46199, 46219, 46229, 46237, 46261, 46271, 46273, 46279, 46301, 46307, 46309, 46327, 46337, 46349, 46351, 46381, 46399, 46411, 46439, 46441, 46447, 46451, 46457, 46471, 46477, 46489, 46499, 46507, 46511, 46523, 46549, 46559, 46567, 46573, 46589, 46591, 46601, 46619, 46633, 46639, 46643, 46649, 46663, 46679, 46681, 46687, 46691, 46703, 46723, 46727, 46747, 46751, 46757, 46769, 46771, 46807, 46811, 46817, 46819, 46829, 46831, 46853, 46861, 46867, 46877, 46889, 46901, 46919, 46933, 46957, 46993, 46997, 47017, 47041, 47051, 47057, 47059, 47087, 47093, 47111, 47119, 47123, 47129, 47137, 47143, 47147, 47149, 47161, 47189, 47207, 47221, 47237, 47251, 47269, 47279, 47287, 47293, 47297, 47303, 47309, 47317, 47339, 47351, 47353, 47363, 47381, 47387, 47389, 47407, 47417, 47419, 47431, 47441, 47459, 47491, 47497, 47501, 47507, 47513, 47521, 47527, 47533, 47543, 47563, 47569, 47581, 47591, 47599, 47609, 47623, 47629, 47639, 47653, 47657, 47659, 47681, 47699, 47701, 47711, 47713, 47717, 47737, 47741, 47743, 47777, 47779, 47791, 47797, 47807, 47809, 47819, 47837, 47843, 47857, 47869, 47881, 47903, 47911, 47917, 47933, 47939, 47947, 47951, 47963, 47969, 47977, 47981, 48017, 48023, 48029, 48049, 48073, 48079, 48091, 48109, 48119, 48121, 48131, 48157, 48163, 48179, 48187, 48193, 48197, 48221, 48239, 48247, 48259, 48271, 48281, 48299, 48311, 48313, 48337, 48341, 48353, 48371, 48383, 48397, 48407, 48409, 48413, 48437, 48449, 48463, 48473, 48479, 48481, 48487, 48491, 48497, 48523, 48527, 48533, 48539, 48541, 48563, 48571, 48589, 48593, 48611]
Algebraic Factor Base: [(0, 2), (2, 2), (0, 7), (7, 7), (5, 13), (12, 13), (6, 17), (11, 19), (22, 23), (5, 29), (18, 29), (6, 31), (16, 31), (1, 37), (30, 37), (16, 43), (20, 43), (22, 53), (37, 59), (50, 59), (59, 61), (25, 67), (17, 71), (40, 71), (65, 73), (71, 73), (82, 83), (86, 89), (24, 97), (34, 97), (60, 101), (63, 101), (83, 101), (94, 101), (80, 103), (85, 103), (43, 107), (100, 109), (17, 131), (39, 131), (71, 137), (79, 139), (110, 139), (4, 149), (147, 149), (39, 151), (93, 151), (7, 163), (58, 163), (51, 167), (73, 173), (81, 179), (148, 179), (151, 181), (173, 191), (7, 197), (48, 197), (166, 197), (170, 197), (195, 211), (57, 227), (65, 239), (98, 251), (126, 251), (72, 257), (183, 257), (103, 269), (169, 269), (66, 271), (205, 271), (234, 281), (19, 293), (246, 293), (60, 307), (61, 307), (88, 317), (3, 331), (80, 337), (42, 349), (155, 349), (308, 373), (268, 379), (330, 383), (342, 401), (81, 419), (192, 419), (327, 421), (54, 433), (65, 439), (227, 439), (100, 449), (196, 449), (315, 457), (60, 499), (179, 499), (117, 503), (121, 503), (272, 523), (372, 523), (47, 547), (295, 557), (286, 569), (213, 577), (446, 599), (501, 599), (481, 607), (339, 631), (422, 631), (338, 653), (587, 653), (113, 673), (593, 673), (210, 677), (538, 677), (30, 683), (495, 683), (360, 691), (224, 701), (505, 719), (570, 719), (405, 727), (29, 733), (261, 733), (561, 733), (612, 733), (568, 751), (222, 769), (51, 773), (169, 787), (390, 821), (346, 823), (323, 839), (548, 839), (689, 857), (372, 859), (601, 859), (167, 863), (219, 877), (692, 877), (862, 907), (762, 911), (519, 919), (351, 937), (764, 937), (742, 947), (828, 947), (134, 953), (287, 971), (308, 971), (493, 983), (371, 997), (45, 1019), (12, 1033), (82, 1039), (223, 1039), (144, 1087), (354, 1093), (1054, 1093), (128, 1097), (1020, 1097), (1045, 1103), (167, 1109), (114, 1117), (368, 1117), (514, 1123), (132, 1151), (583, 1171), (80, 1187), (556, 1193), (884, 1201), (445, 1213), (707, 1213), (129, 1217), (1071, 1217), (175, 1237), (1174, 1237), (684, 1249), (107, 1277), (435, 1277), (988, 1277), (1021, 1277), (1, 1283), (531, 1283), (847, 1283), (1184, 1283), (935, 1289), (524, 1303), (637, 1303), (716, 1303), (726, 1303), (434, 1307), (847, 1319), (578, 1321), (1167, 1361), (1207, 1361), (1305, 1367), (1170, 1373), (218, 1381), (694, 1381), (36, 1399), (716, 1399), (1262, 1423), (1380, 1429), (8, 1451), (144, 1459), (484, 1471), (617, 1471), (846, 1471), (992, 1471), (786, 1481), (1129, 1481), (198, 1483), (483, 1483), (323, 1487), (1458, 1487), (76, 1493), (821, 1511), (340, 1523), (746, 1523), (783, 1543), (337, 1553), (1195, 1553), (310, 1559), (128, 1567), (143, 1571), (868, 1571), (881, 1571), (1247, 1571), (1214, 1579), (931, 1597), (665, 1607), (1037, 1609), (201, 1613), (682, 1613), (507, 1619), (609, 1619), (968, 1627), (1519, 1637), (12, 1657), (696, 1663), (1349, 1669), (1421, 1669), (1686, 1693), (293, 1699), (557, 1699), (1256, 1709), (390, 1721), (666, 1721), (1130, 1721), (1253, 1721), (1537, 1723), (311, 1741), (346, 1741), (1396, 1747), (1622, 1759), (711, 1777), (875, 1777), (873, 1783), (1568, 1783), (201, 1789), (1413, 1789), (1267, 1801), (452, 1811), (1139, 1811), (238, 1823), (1002, 1831), (1517, 1831), (50, 1847), (1532, 1867), (70, 1871), (96, 1871), (168, 1877), (1640, 1889), (313, 1931), (1834, 1931), (110, 1951), (1884, 1951), (870, 1979), (1108, 1993), (718, 2003), (1779, 2011), (848, 2027), (420, 2029), (81, 2039), (1163, 2053), (812, 2081), (310, 2083), (468, 2087), (1605, 2087), (424, 2089), (1347, 2089), (603, 2099), (788, 2111), (1808, 2111), (188, 2129), (851, 2129), (247, 2137), (404, 2141), (1041, 2141), (1810, 2153), (1710, 2203), (362, 2213), (1234, 2221), (505, 2237), (759, 2237), (2188, 2267), (67, 2269), (613, 2273), (1030, 2273), (415, 2281), (560, 2281), (277, 2293), (1202, 2293), (1029, 2297), (628, 2333), (184, 2339), (130, 2357), (1154, 2377), (1605, 2377), (711, 2383), (1604, 2389), (2348, 2389), (1174, 2393), (1953, 2393), (1492, 2399), (710, 2417), (806, 2417), (1177, 2467), (905, 2473), (1061, 2473), (1457, 2473), (1520, 2473), (486, 2477), (1201, 2503), (2372, 2521), (1372, 2549), (226, 2551), (1322, 2551), (211, 2557), (1789, 2557), (1520, 2579), (1108, 2593), (1065, 2609), (1392, 2609), (180, 2617), (1288, 2621), (1358, 2621), (1367, 2647), (1380, 2647), (712, 2657), (1565, 2657), (2345, 2663), (1528, 2683), (600, 2689), (927, 2689), (452, 2693), (1640, 2693), (1496, 2699), (1657, 2699), (2365, 2699), (2576, 2699), (198, 2711), (1358, 2719), (46, 2729), (1140, 2729), (1356, 2731), (2682, 2741), (787, 2749), (1071, 2749), (1170, 2749), (2467, 2749), (36, 2777), (455, 2777), (2375, 2789), (391, 2791), (1847, 2797), (1348, 2801), (2055, 2801), (544, 2819), (568, 2837), (1264, 2837), (2440, 2851), (873, 2857), (445, 2861), (2813, 2879), (222, 2887), (1442, 2897), (1493, 2903), (1803, 2903), (1433, 2909), (1034, 2939), (1119, 2957), (2113, 2969), (1393, 2971), (1620, 2999), (1131, 3001), (724, 3011), (764, 3011), (1893, 3011), (2638, 3011), (3021, 3023), (641, 3041), (1312, 3041), (1892, 3041), (2234, 3041), (1003, 3049), (1470, 3049), (271, 3083), (2302, 3083), (782, 3109), (1152, 3109), (1540, 3109), (2741, 3109), (461, 3119), (1307, 3119), (1260, 3121), (1579, 3163), (121, 3167), (2408, 3167), (3159, 3181), (320, 3187), (1608, 3191), (2355, 3191), (324, 3203), (2146, 3209), (2954, 3209), (1049, 3217), (2792, 3217), (2080, 3221), (2704, 3229), (1138, 3251), (693, 3257), (2732, 3259), (3056, 3259), (372, 3271), (1560, 3271), (1770, 3271), (2837, 3271), (209, 3319), (2408, 3319), (2450, 3323), (1368, 3329), (1699, 3329), (131, 3331), (835, 3331), (239, 3343), (419, 3343), (335, 3347), (132, 3371), (1148, 3371), (2703, 3371), (2756, 3371), (608, 3373), (1637, 3373), (2542, 3389), (2089, 3391), (1126, 3433), (1006, 3457), (2489, 3461), (198, 3463), (927, 3467), (2853, 3469), (719, 3491), (1898, 3491), (828, 3511), (3295, 3511), (2395, 3529), (2143, 3533), (2414, 3533), (1971, 3539), (3313, 3539), (892, 3541), (1332, 3541), (280, 3559), (949, 3559), (996, 3559), (1331, 3559), (655, 3571), (3315, 3571), (942, 3583), (1260, 3593), (2475, 3593), (2744, 3607), (1958, 3631), (2696, 3631), (2196, 3659), (2841, 3659), (1876, 3677), (1656, 3697), (411, 3701), (1304, 3739), (2476, 3739), (41, 3761), (323, 3767), (985, 3769), (181, 3779), (2569, 3779), (58, 3797), (1048, 3821), (1789, 3821), (2, 3823), (3638, 3823), (1846, 3847), (3179, 3847), (3219, 3847), (3294, 3847), (1175, 3851), (1260, 3853), (2989, 3853), (3509, 3863), (2563, 3881), (2591, 3881), (2937, 3881), (3549, 3881), (667, 3889), (2722, 3911), (1082, 3917), (324, 3919), (1523, 3923), (189, 3943), (3264, 3943), (53, 3947), (138, 3947), (1137, 3989), (2484, 4001), (2604, 4001), (1020, 4003), (3481, 4003), (1848, 4007), (633, 4019), (3199, 4019), (1353, 4021), (564, 4051), (3962, 4051), (86, 4091), (1089, 4111), (2761, 4111), (304, 4127), (1030, 4129), (80, 4153), (2820, 4153), (188, 4177), (1979, 4177), (922, 4211), (3041, 4219), (1159, 4229), (2403, 4229), (40, 4231), (2538, 4231), (2679, 4241), (1355, 4243), (137, 4259), (383, 4259), (1057, 4259), (2679, 4259), (1412, 4261), (1053, 4271), (3728, 4271), (924, 4273), (1588, 4273), (1763, 4337), (1833, 4349), (1262, 4357), (1519, 4373), (1627, 4391), (65, 4409), (1888, 4409), (4264, 4423), (2191, 4447), (2823, 4447), (3671, 4457), (722, 4481), (3433, 4493), (3609, 4493), (1257, 4513), (798, 4517), (3193, 4517), (56, 4561), (1293, 4567), (1861, 4583), (329, 4591), (1428, 4591), (2965, 4639), (3475, 4639), (1073, 4649), (797, 4651), (640, 4657), (1455, 4657), (2887, 4657), (4329, 4657), (3893, 4663), (1988, 4721), (2866, 4723), (2454, 4733), (2626, 4733), (4508, 4733), (4608, 4733), (1655, 4751), (1631, 4759), (2700, 4783), (4011, 4787), (871, 4789), (2694, 4789), (2350, 4799), (2754, 4799), (1484, 4813), (3022, 4817), (3289, 4817), (1801, 4831), (2338, 4861), (337, 4877), (453, 4889), (2452, 4889), (591, 4933), (2454, 4933), (1429, 4951), (4585, 4951), (2379, 4957), (4188, 4967), (1914, 4969), (782, 4993), (3748, 4999), (88, 5003), (652, 5021), (755, 5021), (1734, 5021), (1877, 5021), (2656, 5039), (3677, 5051), (368, 5059), (1592, 5077), (4918, 5077), (149, 5087), (3414, 5087), (1126, 5101), (4393, 5107), (951, 5113), (2065, 5113), (2009, 5119), (324, 5147), (2557, 5147), (762, 5167), (4658, 5167), (2466, 5171), (256, 5179), (1099, 5179), (1414, 5179), (2407, 5179), (2061, 5189), (2420, 5189), (1006, 5197), (1675, 5209), (2052, 5227), (2261, 5233), (2488, 5233), (648, 5261), (59, 5297), (3340, 5303), (3656, 5303), (1338, 5309), (4461, 5309), (1815, 5347), (709, 5351), (1228, 5351), (1547, 5381), (1566, 5381), (496, 5387), (279, 5393), (2750, 5393), (238, 5399), (2585, 5413), (3542, 5419), (2088, 5431), (1597, 5441), (1227, 5443), (536, 5449), (3777, 5471), (4305, 5479), (1897, 5483), (2337, 5483), (4153, 5501), (958, 5503), (2934, 5507), (3269, 5507), (1374, 5521), (818, 5527), (2337, 5531), (590, 5569), (2790, 5569), (3797, 5569), (3958, 5569), (516, 5573), (1072, 5573), (4161, 5573), (5394, 5573), (2187, 5581), (1292, 5591), (1492, 5591), (3493, 5591), (4902, 5591), (2595, 5651), (1030, 5657), (3022, 5657), (3183, 5657), (4076, 5657), (2173, 5669), (5199, 5669), (5690, 5693), (4356, 5711), (522, 5737), (1802, 5737), (3757, 5737), (5390, 5737), (664, 5741), (1533, 5779), (2669, 5779), (1512, 5783), (335, 5791), (634, 5791), (5145, 5791), (5465, 5791), (410, 5807), (3319, 5807), (4742, 5813), (1436, 5827), (4179, 5839), (4406, 5839), (2079, 5851), (5112, 5857), (4381, 5861), (5267, 5861), (331, 5879), (1084, 5879), (1190, 5881), (152, 5897), (1225, 5897), (150, 5923), (5474, 5923), (4330, 5939), (576, 5981), (681, 5981), (4886, 5981), (5816, 5981), (4803, 5987), (5373, 6011), (2683, 6067), (1574, 6079), (5399, 6079), (2486, 6089), (4108, 6091), (4595, 6091), (3062, 6101), (5433, 6101), (1104, 6113), (5115, 6113), (2920, 6131), (4414, 6143), (3323, 6151), (4664, 6151), (2345, 6173), (1440, 6197), (3763, 6199), (5382, 6203), (517, 6211), (5523, 6211), (1991, 6217), (5225, 6221), (3506, 6229), (5734, 6229), (2418, 6247), (1392, 6257), (95, 6263), (944, 6271), (4622, 6271), (1134, 6299), (2305, 6299), (3053, 6329), (744, 6343), (2846, 6353), (4824, 6353), (4764, 6359), (3165, 6373), (4259, 6379), (1827, 6397), (5367, 6397), (677, 6427), (1249, 6473), (4363, 6473), (1793, 6491), (4946, 6491), (3036, 6529), (4746, 6529), (3416, 6547), (5923, 6547), (1365, 6551), (3031, 6551), (3866, 6563), (4945, 6569), (5051, 6569), (3685, 6577), (4339, 6581), (5139, 6581), (3982, 6599), (5358, 6607), (2650, 6619), (4722, 6637), (5741, 6673), (5866, 6673), (4968, 6679), (468, 6689), (5351, 6689), (5126, 6701), (6350, 6701), (5465, 6703), (6139, 6709), (2161, 6733), (2900, 6733), (2125, 6763), (4934, 6763), (2239, 6779), (780, 6781), (4655, 6791), (540, 6793), (2470, 6793), (4559, 6823), (5687, 6829), (6054, 6829), (5669, 6833), (2270, 6841), (5974, 6841), (367, 6857), (2198, 6857), (4710, 6857), (6436, 6857), (296, 6863), (2282, 6863), (1528, 6869), (3243, 6869), (3101, 6871), (3736, 6871), (4072, 6883), (4580, 6899), (726, 6917), (5519, 6949), (208, 6961), (203, 6977), (2464, 6983), (2841, 6997), (4891, 6997), (4718, 7057), (3014, 7079), (6897, 7109), (3680, 7121), (1342, 7151), (4164, 7151), (3222, 7159), (5680, 7177), (6109, 7177), (993, 7193), (220, 7207), (1139, 7207), (2642, 7207), (3203, 7207), (7052, 7211), (322, 7229), (682, 7237), (7041, 7243), (2658, 7283), (3047, 7283), (1790, 7297), (2038, 7307), (3972, 7307), (6291, 7309), (6675, 7349), (4175, 7351), (6288, 7351), (2455, 7369), (6171, 7369), (1368, 7393), (5702, 7393), (1437, 7411), (5890, 7411), (6781, 7417), (200, 7451), (4183, 7451), (1525, 7459), (6327, 7459), (7096, 7459), (7426, 7459), (88, 7481), (1774, 7487), (1673, 7499), (2676, 7499), (4722, 7507), (4984, 7523), (300, 7529), (2447, 7537), (3598, 7537), (1053, 7547), (6210, 7547), (2678, 7561), (1612, 7573), (7285, 7573), (919, 7577), (6933, 7577), (2946, 7583), (470, 7589), (4399, 7603), (6159, 7603), (5256, 7607), (6958, 7607), (618, 7621), (1484, 7621), (234, 7639), (798, 7639), (6349, 7717), (6519, 7717), (7216, 7723), (838, 7741), (6007, 7741), (968, 7753), (389, 7757), (3401, 7757), (3974, 7789), (1749, 7793), (2673, 7793), (1729, 7817), (2278, 7817), (4842, 7817), (6782, 7817), (2595, 7823), (2960, 7823), (5793, 7829), (6757, 7841), (3641, 7853), (1508, 7877), (3252, 7879), (7545, 7879), (4816, 7901), (5665, 7901), (2474, 7907), (2854, 7907), (3655, 7907), (6828, 7907), (259, 7933), (2525, 7933), (2106, 7993), (7977, 8009), (6034, 8011), (3501, 8039), (120, 8053), (5198, 8081), (4233, 8087), (5759, 8087), (2051, 8093), (3424, 8093), (1949, 8111), (3824, 8111), (4898, 8111), (5548, 8111), (809, 8117), (2875, 8117), (5372, 8123), (7611, 8147), (1924, 8161), (3037, 8167), (4888, 8167), (2942, 8171), (3559, 8171), (948, 8179), (6850, 8179), (1708, 8191), (5318, 8191), (5485, 8219), (6222, 8219), (5591, 8231), (5659, 8231), (5, 8233), (1436, 8269), (2244, 8269), (4956, 8273), (1660, 8287), (4135, 8293), (448, 8353), (2088, 8353), (6062, 8363), (8109, 8363), (3729, 8369), (4338, 8369), (1855, 8377), (192, 8387), (207, 8387), (1037, 8387), (6948, 8387), (861, 8429), (5778, 8431), (3354, 8447), (3634, 8447), (4455, 8461), (5123, 8461), (1813, 8501), (2167, 8527), (703, 8537), (2443, 8539), (2486, 8539), (3264, 8543), (6169, 8543), (6821, 8581), (1687, 8597), (2577, 8597), (4444, 8597), (8483, 8597), (2518, 8599), (6928, 8599), (373, 8623), (3496, 8627), (1165, 8629), (4599, 8629), (5559, 8629), (5932, 8629), (889, 8641), (4155, 8641), (4357, 8647), (7521, 8663), (8209, 8663), (6334, 8681), (6026, 8693), (8218, 8693), (1010, 8699), (6578, 8699), (3459, 8713), (7396, 8713), (3423, 8719), (6774, 8719), (2066, 8747), (7165, 8761), (1498, 8779), (1972, 8779), (7301, 8783), (539, 8803), (4699, 8803), (5926, 8803), (6439, 8803), (3036, 8807), (6059, 8807), (1632, 8819), (8219, 8819), (4519, 8821), (6492, 8849), (5354, 8861), (7709, 8861), (846, 8863), (2271, 8863), (4873, 8867), (2188, 8887), (7777, 8887), (714, 8893), (8859, 8929), (3294, 8933), (5652, 8951), (7717, 8951), (242, 8963), (5452, 8963), (3369, 8971), (8243, 8971), (3127, 8999), (3367, 8999), (5554, 8999), (5947, 8999), (2245, 9001), (7457, 9007), (1192, 9013), (4756, 9013), (5375, 9013), (6700, 9013), (2648, 9029), (509, 9041), (2873, 9041), (2843, 9043), (4186, 9043), (6680, 9067), (4074, 9091), (1492, 9103), (6068, 9109), (8978, 9109), (2465, 9127), (2565, 9133), (4166, 9133), (1756, 9137), (7164, 9151), (2185, 9157), (1806, 9173), (7873, 9173), (1310, 9181), (8348, 9187), (777, 9199), (5509, 9203), (2757, 9221), (7318, 9221), (953, 9241), (4096, 9257), (4454, 9257), (9150, 9283), (8231, 9311), (6915, 9319), (6941, 9319), (8146, 9323), (3102, 9337), (3191, 9341), (7609, 9341), (6474, 9343), (1504, 9371), (7980, 9391), (6858, 9403), (28, 9419), (5025, 9419), (6854, 9421), (2337, 9431), (1052, 9437), (2019, 9437), (8084, 9439), (6536, 9467), (1046, 9491), (2936, 9497), (7471, 9497), (4198, 9511), (9477, 9521), (8684, 9533), (9448, 9533), (7392, 9551), (3219, 9587), (181, 9613), (8222, 9613), (5728, 9623), (495, 9629), (2521, 9661), (6406, 9661), (2242, 9679), (833, 9689), (4550, 9719), (1185, 9733), (6974, 9733), (8275, 9781), (3106, 9787), (111, 9803), (781, 9803), (8481, 9811), (24, 9817), (132, 9817), (6457, 9833), (6577, 9833), (7346, 9839), (9490, 9839), (7357, 9857), (2060, 9859), (5455, 9859), (2533, 9871), (8448, 9871), (8163, 9887), (426, 9907), (3029, 9907), (7390, 9907), (8966, 9907), (9507, 9923), (844, 9949), (6097, 9949), (392, 9967), (6758, 9967), (3554, 9973), (2208, 10007), (2454, 10009), (1974, 10037), (8323, 10037), (3606, 10039), (3347, 10061), (3953, 10061), (1040, 10069), (6503, 10079), (324, 10091), (4494, 10091), (1703, 10093), (3919, 10093), (5773, 10093), (8788, 10093), (5188, 10133), (7622, 10133), (8431, 10133), (9155, 10133), (4801, 10139), (7795, 10139), (1010, 10159), (4848, 10169), (6784, 10177), (7075, 10177), (7954, 10193), (508, 10211), (5898, 10223), (7568, 10223), (1602, 10247), (10220, 10247), (2932, 10259), (2955, 10259), (6232, 10259), (8396, 10259), (5119, 10267), (5320, 10267), (4542, 10271), (1731, 10273), (3707, 10273), (5022, 10273), (10083, 10273), (5585, 10289), (9476, 10289), (54, 10301), (8229, 10301), (849, 10303), (1905, 10321), (7931, 10321), (9364, 10331), (4698, 10343), (9436, 10343), (3200, 10369), (3000, 10399), (3398, 10427), (4343, 10429), (4686, 10433), (6564, 10433), (5999, 10457), (6379, 10459), (5144, 10463), (273, 10487), (9746, 10487), (5930, 10499), (9151, 10499), (6528, 10501), (7447, 10501), (2042, 10531), (7772, 10531), (4696, 10559), (3733, 10589), (54, 10597), (8148, 10597), (1024, 10627), (5885, 10627), (4277, 10631), (8145, 10631), (5290, 10639), (2217, 10657), (1940, 10663), (3677, 10663), (7264, 10663), (8442, 10663), (2473, 10691), (9211, 10691), (1177, 10709), (4610, 10711), (6840, 10711), (2859, 10723), (2494, 10729), (8691, 10729), (854, 10753), (5764, 10753), (1818, 10771), (8700, 10771), (1336, 10789), (6615, 10789), (1817, 10831), (4525, 10831), (1100, 10847), (9560, 10847), (1490, 10867), (5199, 10867), (1785, 10883), (5920, 10883), (5560, 10889), (746, 10903), (5731, 10903), (4633, 10909), (148, 10937), (7291, 10939), (969, 10957), (8075, 10973), (2032, 10979), (3284, 10979), (5705, 10979), (10934, 10979), (1848, 10987), (4817, 10987), (3711, 11003), (7982, 11003), (978, 11027), (2123, 11027), (2054, 11047), (5619, 11057), (9334, 11059), (417, 11069), (5292, 11069), (2216, 11071), (7081, 11071), (415, 11087), (1023, 11113), (1049, 11113), (9078, 11113), (11073, 11113), (4879, 11119), (7578, 11119), (1, 11131), (107, 11131), (5121, 11131), (5899, 11131), (1693, 11149), (9703, 11171), (434, 11197), (8699, 11213), (9431, 11213), (7207, 11239), (8324, 11239), (8886, 11239), (9297, 11239), (4266, 11257), (10, 11261), (2010, 11261), (3740, 11261), (5498, 11261), (963, 11279), (3046, 11279), (10772, 11287), (7995, 11311), (8231, 11311), (6984, 11353), (10201, 11369), (11206, 11369), (8233, 11393), (549, 11411), (4122, 11411), (1545, 11437), (7035, 11437), (7577, 11447), (2561, 11467), (8347, 11471), (5901, 11483), (10726, 11489), (2210, 11497), (5574, 11497), (5605, 11497), (9602, 11497), (449, 11503), (1192, 11503), (1004, 11549), (7992, 11551), (11429, 11587), (4523, 11593), (4738, 11597), (11515, 11597), (5857, 11621), (1745, 11633), (1365, 11681), (108, 11699), (8118, 11699), (1485, 11731), (9500, 11731), (11694, 11777), (8804, 11783), (1510, 11801), (11106, 11807), (6401, 11813), (6906, 11813), (402, 11821), (7959, 11821), (2087, 11833), (2625, 11833), (9055, 11833), (9896, 11833), (3076, 11867), (9692, 11867), (1696, 11897), (9385, 11897), (869, 11923), (6082, 11923), (1457, 11933), (6369, 11939), (10647, 11939), (716, 11941), (3963, 11959), (7096, 11959), (10751, 11969), (4583, 11971), (6567, 11987), (6075, 12007), (4112, 12041), (2441, 12073), (4423, 12097), (7922, 12097), (293, 12107), (11690, 12113), (3417, 12119), (7173, 12149), (2358, 12163), (4256, 12197), (9737, 12197), (10896, 12197), (11699, 12197), (10925, 12203), (1157, 12227), (5813, 12227), (11207, 12239), (1361, 12251), (8329, 12251), (5752, 12253), (7852, 12253), (3862, 12263), (11826, 12269), (2546, 12277), (8038, 12281), (9662, 12281), (5864, 12301), (11017, 12301), (145, 12323), (3713, 12323), (2345, 12343), (5758, 12343), (4649, 12377), (10505, 12379), (7034, 12401), (3054, 12421), (2834, 12433), (4662, 12437), (2446, 12451), (2733, 12451), (5368, 12473), (7647, 12473), (851, 12479), (11318, 12487), (11413, 12487), (5335, 12491), (12482, 12491), (5281, 12503), (10676, 12503), (3379, 12511), (5468, 12511), (3427, 12547), (5794, 12547), (6474, 12547), (9396, 12547), (363, 12569), (7351, 12569), (3449, 12577), (3471, 12583), (415, 12611), (7423, 12613), (9794, 12613), (10561, 12637), (259, 12659), (4651, 12671), (1163, 12713), (4029, 12721), (11354, 12721), (113, 12739), (1603, 12743), (6555, 12743), (7907, 12743), (9418, 12743), (7070, 12809), (7501, 12809), (2142, 12823), (2932, 12853), (10877, 12889), (4381, 12893), (3131, 12907), (7380, 12911), (9318, 12911), (62, 12923), (2690, 12923), (6661, 12941), (7743, 12953), (1489, 12959), (7240, 12967), (6695, 12979), (3746, 12983), (5538, 12983), (6268, 13001), (8963, 13001), (4838, 13003), (642, 13009), (8716, 13009), (6225, 13037), (7186, 13037), (3229, 13043), (10452, 13043), (2917, 13049), (4777, 13049), (6482, 13049), (11919, 13049), (468, 13093), (7127, 13093), (10119, 13099), (6614, 13109), (7776, 13109), (3912, 13121), (5819, 13127), (9783, 13127), (9857, 13147), (10505, 13147), (923, 13151), (11826, 13159), (752, 13163), (12258, 13163), (9464, 13177), (8861, 13183), (2171, 13187), (3800, 13187), (5147, 13217), (10902, 13217), (6854, 13219), (1742, 13229), (447, 13249), (3505, 13259), (9244, 13259), (11075, 13291), (4317, 13297), (12850, 13297), (7728, 13309), (5738, 13313), (1943, 13327), (7235, 13327), (7478, 13339), (1473, 13367), (2928, 13367), (382, 13381), (4438, 13381), (5937, 13411), (9188, 13417), (2245, 13421), (11228, 13421), (7494, 13451), (3444, 13457), (12936, 13457), (9368, 13463), (7184, 13469), (12485, 13469), (1023, 13487), (10808, 13499), (11006, 13499), (4580, 13567), (1296, 13577), (8695, 13577), (5481, 13619), (9337, 13619), (4141, 13633), (12967, 13633), (1034, 13649), (2267, 13679), (9615, 13679), (3970, 13687), (407, 13691), (351, 13709), (873, 13709), (992, 13709), (11490, 13709), (1264, 13711), (12089, 13729), (7914, 13757), (9094, 13757), (6857, 13759), (4293, 13763), (6159, 13763), (12914, 13789), (13289, 13789), (1672, 13799), (12867, 13807), (8525, 13829), (2928, 13831), (11238, 13831), (4599, 13903), (8783, 13921), (12224, 13921), (504, 13931), (6238, 13931), (534, 13933), (4010, 13963), (8472, 13963), (13480, 13967), (4574, 13999), (7388, 13999), (7471, 14011), (8495, 14011), (12213, 14011), (13851, 14011), (1411, 14029), (4094, 14029), (2963, 14033), (5508, 14033), (12463, 14051), (11778, 14071), (12259, 14071), (5754, 14107), (5789, 14107), (1590, 14153), (10157, 14177), (11856, 14177), (10336, 14197), (637, 14207), (1162, 14207), (10073, 14221), (13048, 14221), (5087, 14243), (1224, 14249), (6536, 14249), (10779, 14251), (13800, 14251), (7820, 14281), (9763, 14281), (1687, 14293), (11987, 14303), (5826, 14321), (11063, 14321), (12967, 14321), (13104, 14321), (7772, 14341), (13357, 14341), (876, 14387), (6806, 14387), (11826, 14389), (7017, 14407), (12640, 14407), (2370, 14411), (9362, 14419), (10361, 14419), (10413, 14423), (5807, 14447), (6304, 14447), (5390, 14449), (14365, 14461), (3821, 14519), (7033, 14519), (5374, 14543), (5054, 14551), (4625, 14561), (2942, 14591), (12287, 14621), (14063, 14629), (1924, 14639), (14090, 14639), (6255, 14653), (5726, 14699), (4142, 14713), (6139, 14717), (2508, 14723), (12142, 14723), (911, 14731), (8283, 14741), (31, 14747), (4783, 14753), (5166, 14753), (9196, 14771), (3806, 14779), (4498, 14779), (7758, 14779), (13493, 14779), (7320, 14783), (11114, 14783), (9667, 14797), (1649, 14821), (7693, 14821), (695, 14827), (3896, 14827), (2554, 14831), (8606, 14843), (3512, 14851), (5249, 14851), (10738, 14867), (10031, 14869), (11221, 14869), (14732, 14887), (462, 14891), (11450, 14891), (11713, 14897), (6592, 14929), (9830, 14939), (5982, 14951), (5871, 14957), (14869, 14957), (671, 14983), (1284, 15013), (7814, 15017), (12605, 15017), (11577, 15053), (14539, 15053), (5498, 15073), (3870, 15077), (5900, 15077), (7231, 15083), (12087, 15083), (1977, 15101), (3319, 15101), (12002, 15101), (12901, 15101), (2901, 15121), (6109, 15121), (6828, 15121), (14401, 15121), (1866, 15139), (6930, 15139), (8440, 15139), (13039, 15139), (9813, 15173), (13190, 15173), (8467, 15187), (8723, 15199), (3853, 15227), (6659, 15227), (9491, 15227), (10448, 15227), (4289, 15241), (11237, 15241), (7926, 15259), (571, 15269), (3271, 15271), (10447, 15277), (9687, 15287), (4547, 15289), (10191, 15307), (14556, 15307), (896, 15319), (15241, 15329), (9419, 15331), (10699, 15331), (4541, 15349), (8503, 15361), (11408, 15373), (3379, 15377), (8338, 15383), (1459, 15413), (8160, 15413), (5577, 15427), (9233, 15427), (1848, 15451), (10095, 15451), (11340, 15461), (11433, 15467), (2961, 15473), (6348, 15473), (11772, 15497), (8011, 15511), (5244, 15541), (15408, 15541), (4335, 15559), (14140, 15569), (14544, 15581), (2065, 15607), (5393, 15607), (7691, 15619), (7355, 15629), (11982, 15641), (7781, 15643), (15553, 15647), (6454, 15649), (13974, 15667), (966, 15671), (8240, 15679), (3202, 15683), (13572, 15683), (8551, 15727), (12739, 15727), (2381, 15731), (3790, 15731), (4491, 15731), (5066, 15731), (8056, 15733), (12861, 15733), (9578, 15739), (13171, 15739), (382, 15749), (3780, 15761), (5068, 15761), (7409, 15761), (15262, 15761), (14345, 15767), (10300, 15773), (13655, 15773), (10072, 15797), (10965, 15797), (8240, 15817), (12278, 15817), (14359, 15859), (2969, 15881), (5078, 15881), (2324, 15887), (4277, 15887), (1649, 15889), (13784, 15889), (3366, 15907), (6820, 15907), (9066, 15907), (12559, 15907), (9598, 15913), (1814, 15923), (14705, 15937), (15660, 15937), (3716, 15959), (9926, 15959), (1883, 15971), (9411, 15971), (1355, 15991), (3577, 15991), (9803, 16001), (13248, 16001), (450, 16063), (4990, 16063), (8083, 16067), (12020, 16067), (12015, 16069), (15715, 16069), (13484, 16073), (84, 16103), (102, 16103), (5432, 16103), (10482, 16103), (7926, 16127), (12695, 16127), (12087, 16193), (3279, 16217), (11612, 16217), (7084, 16223), (14265, 16231), (2270, 16253), (14574, 16253), (5976, 16273), (6344, 16273), (7358, 16273), (12865, 16273), (2413, 16319), (12981, 16333), (6590, 16369), (15266, 16369), (2332, 16381), (4082, 16381), (5231, 16421), (15453, 16421), (5520, 16433), (1949, 16447), (5708, 16447), (1247, 16451), (10816, 16451), (5627, 16477), (1969, 16481), (12570, 16481), (6173, 16519), (11617, 16519), (4665, 16529), (4768, 16529), (10482, 16529), (13140, 16529), (2730, 16547), (6519, 16547), (1911, 16553), (10944, 16561), (5674, 16603), (9672, 16607), (10937, 16607), (5183, 16631), (3520, 16649), (7894, 16649), (9117, 16649), (12764, 16649), (3930, 16651), (4519, 16673), (7582, 16673), (8024, 16673), (13218, 16673), (9942, 16691), (987, 16693), (8782, 16693), (9113, 16759), (9359, 16759), (130, 16763), (15312, 16811), (14506, 16823), (598, 16843), (13003, 16879), (8121, 16889), (13027, 16889), (12415, 16901), (4802, 16903), (9700, 16903), (2980, 16921), (14413, 16921), (7289, 16937), (7936, 16937), (4392, 16943), (10916, 16943), (4005, 16963), (1768, 16979), (6427, 16979), (10305, 16979), (15455, 16979), (5318, 16987), (7613, 17021), (12369, 17021), (3516, 17033), (13870, 17041), (10330, 17047), (1205, 17077), (15439, 17107), (89, 17117), (8674, 17117), (4448, 17137), (9887, 17183), (2721, 17189), (1440, 17191), (11201, 17209), (13401, 17209), (12334, 17231), (4331, 17257), (12600, 17257), (7406, 17291), (14592, 17291), (10016, 17299), (14510, 17317), (11046, 17321), (13315, 17333), (53, 17359), (7401, 17359), (10463, 17359), (16798, 17359), (8827, 17377), (4645, 17387), (3344, 17389), (16998, 17389), (4411, 17393), (8318, 17393), (3507, 17401), (15066, 17401), (6764, 17417), (7191, 17419), (8836, 17419), (9142, 17443), (5936, 17471), (2288, 17477), (13980, 17477), (8566, 17489), (8443, 17491), (10256, 17491), (1884, 17497), (16940, 17497), (12809, 17519), (17347, 17551), (4487, 17573), (5129, 17573), (9204, 17581), (12437, 17581), (11814, 17627), (6086, 17657), (5976, 17669), (11012, 17681), (12885, 17707), (4182, 17713), (4188, 17713), (2412, 17729), (6652, 17737), (14916, 17737), (10174, 17749), (12343, 17791), (14454, 17791), (5007, 17827), (5722, 17827), (3497, 17839), (8265, 17839), (10408, 17839), (13505, 17839), (10626, 17851), (9584, 17881), (14837, 17891), (4920, 17909), (10198, 17909), (9861, 17911), (15903, 17911), (5654, 17921), (1929, 17923), (2030, 17929), (5443, 17957), (5288, 17971), (13977, 17971), (16504, 17981), (7650, 17989), (12508, 17989), (3548, 18013), (392, 18043), (8238, 18043), (562, 18047), (17678, 18049), (13748, 18059), (11074, 18077), (16390, 18089), (16616, 18089), (5969, 18097), (15698, 18097), (5306, 18119), (3751, 18121), (4280, 18127), (9209, 18127), (3427, 18133), (698, 18143), (6358, 18143), (2479, 18149), (4200, 18191), (9844, 18191), (11562, 18199), (1392, 18217), (1560, 18223), (16574, 18223), (6589, 18229), (3320, 18251), (5284, 18257), (11940, 18257), (6719, 18287), (9275, 18287), (14690, 18289), (14951, 18289), (4991, 18301), (6062, 18301), (7634, 18301), (17912, 18301), (9625, 18307), (275, 18371), (9318, 18371), (10230, 18379), (7247, 18401), (9726, 18413), (10903, 18413), (784, 18433), (17775, 18433), (18367, 18433), (18370, 18433), (7052, 18443), (3524, 18451), (13977, 18451), (1134, 18503), (12110, 18503), (6561, 18521), (10702, 18539), (4145, 18541), (6990, 18541), (13938, 18553), (16440, 18587), (901, 18593), (12558, 18637), (17624, 18637), (7476, 18661), (8847, 18661), (3253, 18671), (18374, 18671), (9659, 18691), (12124, 18691), (8756, 18701), (14762, 18701), (10154, 18719), (16839, 18719), (3866, 18731), (15212, 18731), (10352, 18743), (15042, 18743), (17805, 18773), (7204, 18787), (8286, 18839), (18461, 18839), (15556, 18869), (4109, 18899), (10918, 18899), (12177, 18913), (11469, 18917), (10802, 18919), (16429, 18947), (785, 18959), (3623, 18973), (8080, 19031), (13630, 19031), (11573, 19037), (11562, 19051), (12214, 19051), (1196, 19069), (17100, 19069), (6360, 19087), (8722, 19087), (5765, 19121), (2345, 19157), (17222, 19157), (7828, 19163), (9580, 19181), (15538, 19181), (11007, 19207), (19150, 19207), (7275, 19211), (14747, 19211), (11299, 19213), (7934, 19219), (17515, 19219), (16555, 19231), (6376, 19237), (14312, 19259), (8395, 19267), (12885, 19289), (15029, 19301), (1811, 19309), (6693, 19319), (14214, 19319), (1756, 19333), (6898, 19333), (4161, 19373), (7812, 19379), (17958, 19379), (2429, 19381), (18070, 19381), (3063, 19387), (16507, 19403), (6808, 19427), (7210, 19427), (18996, 19429), (5705, 19457), (9608, 19457), (5291, 19463), (12741, 19471), (1853, 19477), (10897, 19477), (16508, 19483), (18315, 19483), (5979, 19489), (1893, 19501), (7101, 19501), (11200, 19501), (18805, 19501), (18339, 19507), (5169, 19543), (14173, 19543), (9936, 19559), (2386, 19571), (6666, 19577), (12739, 19577), (2973, 19583), (4667, 19583), (12132, 19583), (19391, 19583), (2065, 19603), (3234, 19603), (14968, 19603), (18936, 19603), (12889, 19661), (18209, 19661), (11591, 19681), (14326, 19709), (15692, 19709), (775, 19717), (17616, 19717), (9296, 19727), (11776, 19727), (2534, 19753), (5545, 19753), (13367, 19759), (14363, 19763), (10940, 19777), (3276, 19793), (6269, 19793), (12517, 19793), (17521, 19793), (5509, 19813), (15533, 19819), (19676, 19819), (1041, 19843), (11268, 19843), (11473, 19843), (15901, 19843), (2178, 19853), (16518, 19867), (3614, 19891), (4749, 19891), (3783, 19913), (7392, 19919), (12412, 19919), (4781, 19927), (8840, 19937), (16825, 19937), (1461, 19949), (4967, 19963), (16727, 19963), (416, 19973), (3493, 19973), (5412, 19973), (10649, 19973), (14776, 19979), (1829, 19997), (7843, 19997), (2208, 20011), (1368, 20021), (7222, 20029), (13739, 20071), (14470, 20089), (7158, 20107), (12342, 20113), (14918, 20113), (16036, 20113), (17040, 20113), (7408, 20117), (9716, 20123), (17866, 20123), (1880, 20143), (5216, 20143), (14333, 20147), (9687, 20149), (12961, 20173), (18315, 20233), (17280, 20261), (14887, 20269), (79, 20323), (4805, 20323), (4643, 20327), (5465, 20327), (8546, 20347), (13575, 20353), (11045, 20357), (2186, 20359), (2110, 20369), (13893, 20369), (7363, 20399), (13157, 20399), (7207, 20411), (2335, 20441), (12639, 20443), (20089, 20443), (8961, 20477), (9832, 20477), (8967, 20479), (19554, 20483), (12944, 20521), (10584, 20543), (14290, 20543), (1856, 20551), (1109, 20563), (8342, 20593), (10038, 20593), (16796, 20611), (13666, 20639), (20552, 20639), (16068, 20681), (13205, 20693), (17183, 20693), (7361, 20707), (13318, 20707), (5833, 20717), (16093, 20717), (19842, 20743), (5198, 20747), (13604, 20747), (1981, 20749), (18437, 20749), (2219, 20759), (1451, 20773), (6160, 20773), (3754, 20789), (10989, 20789), (19427, 20809), (14300, 20849), (15331, 20849), (20605, 20857), (10183, 20873), (530, 20879), (14905, 20879), (15807, 20887), (19276, 20887), (6812, 20897), (19680, 20897), (5279, 20899), (20438, 20899), (6245, 20921), (20193, 20921), (2333, 20947), (9553, 20947), (4487, 20959), (12094, 20959), (1054, 20981), (5113, 20981), (3381, 20983), (4053, 20983), (8510, 21001), (9094, 21011), (3686, 21023), (8772, 21031), (5266, 21061), (19028, 21061), (7050, 21067), (18851, 21067), (19274, 21089), (135, 21121), (13068, 21139), (14971, 21139), (7165, 21143), (14233, 21143), (11137, 21157), (19382, 21157), (1422, 21163), (8900, 21179), (12870, 21179), (10382, 21191), (15615, 21221), (7304, 21227), (8222, 21227), (12915, 21227), (14010, 21227), (533, 21269), (12920, 21277), (19493, 21277), (17970, 21283), (10593, 21319), (13909, 21319), (4866, 21323), (614, 21341), (16162, 21347), (18280, 21379), (13616, 21383), (2049, 21391), (6754, 21397), (9556, 21397), (12323, 21397), (14158, 21397), (4261, 21407), (7589, 21433), (15965, 21481), (16560, 21481), (6012, 21491), (7307, 21493), (16402, 21493), (5046, 21499), (5296, 21499), (937, 21503), (9682, 21517), (18919, 21517), (14645, 21523), (13057, 21563), (8417, 21587), (14555, 21589), (21188, 21599), (21352, 21599), (19766, 21611), (716, 21649), (10755, 21683), (11634, 21701), (13341, 21713), (6953, 21727), (10530, 21739), (4558, 21751), (9346, 21751), (14473, 21751), (15122, 21751), (9, 21757), (21, 21757), (9891, 21787), (16928, 21787), (5147, 21803), (6775, 21803), (1368, 21817), (4114, 21821), (11094, 21839), (15437, 21839), (6403, 21841), (18209, 21851), (13325, 21863), (9455, 21881), (13354, 21881), (6812, 21929), (18538, 21929), (9788, 21961), (16379, 21977), (20097, 21977), (15737, 21991), (3454, 22013), (2153, 22027), (11086, 22031), (5476, 22037), (19322, 22037), (9559, 22063), (21842, 22063), (10843, 22067), (21885, 22067), (11003, 22073), (13923, 22073), (9554, 22091), (1282, 22111), (6028, 22123), (15658, 22133), (19223, 22133), (10324, 22147), (13030, 22153), (3820, 22171), (14008, 22171), (5932, 22193), (15327, 22229), (570, 22247), (16555, 22259), (9359, 22271), (1512, 22273), (21410, 22273), (8937, 22277), (17884, 22279), (18823, 22279), (9613, 22283), (22186, 22283), (6019, 22291), (8161, 22303), (17910, 22303), (863, 22307), (5381, 22307), (18636, 22307), (19731, 22307), (12024, 22343), (4755, 22349), (19312, 22369), (21670, 22369), (1307, 22381), (9429, 22381), (1706, 22391), (19786, 22391), (6075, 22397), (15482, 22397), (2247, 22433), (4497, 22433), (2898, 22453), (18797, 22469), (22150, 22469), (2411, 22481), (3315, 22481), (13371, 22483), (6308, 22511), (15812, 22511), (10610, 22531), (11159, 22531), (20457, 22549), (3248, 22573), (8235, 22621), (19281, 22621), (7204, 22637), (338, 22639), (8382, 22639), (104, 22643), (3014, 22643), (7846, 22669), (7941, 22691), (16289, 22691), (4044, 22697), (1410, 22699), (5845, 22709), (3816, 22727), (18763, 22739), (20755, 22739), (15724, 22741), (7146, 22751), (8191, 22777), (22347, 22777), (5962, 22783), (7481, 22783), (7203, 22787), (6586, 22807), (8810, 22807), (4320, 22811), (8548, 22811), (7451, 22817), (8674, 22817), (8445, 22859), (4544, 22871), (3995, 22937), (12497, 22943), (21799, 22943), (6620, 22961), (16639, 22961), (12153, 22963), (19485, 22963), (10941, 22973), (20652, 22993), (6855, 23003), (7492, 23003), (20486, 23021), (13404, 23027), (17321, 23027), (5084, 23053), (12694, 23053), (637, 23059), (9224, 23059), (8821, 23071), (12772, 23071), (21514, 23087), (12398, 23099), (14235, 23117), (22389, 23117), (1686, 23131), (4529, 23143), (6506, 23197), (22581, 23203), (483, 23209), (10532, 23269), (14547, 23279), (9283, 23291), (9365, 23293), (18891, 23297), (16662, 23311), (19420, 23311), (16312, 23321), (12569, 23327), (5712, 23333), (23275, 23333), (18613, 23339), (23163, 23371), (593, 23399), (4935, 23399), (5266, 23431), (14992, 23431), (22518, 23459), (2765, 23497), (22188, 23497), (2558, 23509), (14472, 23531), (843, 23537), (9801, 23539), (14956, 23539), (770, 23557), (154, 23563), (807, 23593), (11158, 23593), (10757, 23603), (14421, 23603), (6618, 23623), (8774, 23623), (13070, 23623), (18781, 23623), (12095, 23629), (16095, 23629), (5552, 23633), (6747, 23663), (10140, 23669), (21760, 23669), (22689, 23671), (19317, 23719), (12911, 23741), (22698, 23741), (4572, 23743), (11509, 23761), (15127, 23761), (11364, 23789), (17854, 23789), (19008, 23789), (23138, 23789), (11574, 23813), (4986, 23831), (4813, 23833), (9899, 23869), (23559, 23869), (11843, 23873), (15866, 23873), (20641, 23873), (23266, 23873), (8828, 23879), (8983, 23879), (2403, 23893), (10756, 23899), (3722, 23911), (12736, 23911), (6625, 23917), (10386, 23917), (23214, 23929), (11741, 23957), (2863, 23977), (12746, 23977), (1784, 23981), (4218, 23981), (261, 24007), (11020, 24019), (15195, 24019), (22334, 24019), (23505, 24019), (2756, 24023), (9206, 24029), (22190, 24043), (15899, 24061), (10629, 24071), (20, 24077), (16120, 24083), (21179, 24083), (16802, 24091), (14840, 24097), (11340, 24107), (14456, 24107), (16833, 24113), (23530, 24113), (7938, 24133), (21990, 24137), (20332, 24151), (8234, 24179), (21393, 24179), (21447, 24179), (21460, 24179), (12912, 24197), (6836, 24223), (2708, 24239), (22684, 24239), (711, 24251), (9160, 24251), (12560, 24329), (15966, 24329), (2375, 24337), (15579, 24337), (9895, 24359), (5094, 24373), (20835, 24373), (4120, 24379), (10335, 24379), (14969, 24407), (15667, 24413), (11752, 24419), (14848, 24419), (522, 24421), (19810, 24443), (24300, 24443), (16520, 24469), (22309, 24469), (5263, 24481), (21113, 24481), (4111, 24517), (19703, 24517), (15959, 24527), (16810, 24551), (11874, 24571), (18891, 24571), (10945, 24611), (11550, 24611), (12200, 24631), (17874, 24631), (9556, 24659), (13713, 24659), (171, 24671), (17869, 24671), (1400, 24683), (6371, 24691), (24571, 24691), (15844, 24697), (5244, 24709), (18612, 24709), (757, 24763), (19855, 24763), (1838, 24767), (8180, 24767), (18223, 24767), (21290, 24767), (10608, 24781), (14067, 24793), (14419, 24799), (15186, 24799), (3061, 24841), (14877, 24841), (7529, 24847), (8217, 24847), (11355, 24847), (22590, 24847), (2402, 24859), (10784, 24859), (4258, 24877), (3782, 24889), (7429, 24889), (14131, 24919), (24179, 24919), (4235, 24967), (9380, 24967), (7060, 24977), (24892, 24977), (24818, 24979), (323, 24989), (1566, 25013), (1458, 25031), (7373, 25033), (8555, 25033), (8523, 25037), (24353, 25057), (7430, 25073), (12758, 25087), (10345, 25097), (19733, 25097), (22484, 25097), (22726, 25097), (6768, 25117), (20876, 25117), (2769, 25147), (3274, 25153), (10870, 25163), (10140, 25171), (11030, 25171), (12611, 25171), (16558, 25171), (5647, 25189), (12662, 25189), (5480, 25229), (24957, 25237), (24054, 25243), (2001, 25247), (20243, 25247), (14448, 25253), (22088, 25301), (10623, 25307), (5832, 25309), (13148, 25309), (14667, 25349), (19633, 25349), (12950, 25357), (14096, 25357), (12321, 25391), (6018, 25411), (19324, 25411), (13083, 25453), (18341, 25453), (14962, 25457), (21653, 25457), (6790, 25463), (735, 25523), (2544, 25523), (22445, 25523), (25319, 25523), (4639, 25537), (13698, 25537), (15202, 25537), (17532, 25537), (5154, 25577), (15374, 25577), (2395, 25579), (9838, 25579), (15895, 25603), (17449, 25603), (6612, 25609), (16492, 25621), (5071, 25633), (13167, 25639), (1888, 25643), (15944, 25667), (20553, 25667), (1778, 25693), (11835, 25703), (22312, 25717), (5910, 25747), (15736, 25759), (8448, 25793), (23815, 25793), (4268, 25801), (10020, 25801), (138, 25841), (9875, 25841), (661, 25847), (5304, 25847), (3544, 25873), (12353, 25873), (16788, 25873), (19058, 25873), (9704, 25889), (15592, 25903), (22897, 25903), (10910, 25913), (19656, 25913), (16656, 25933), (20062, 25933), (10319, 25943), (5012, 25951), (10254, 25951), (14125, 25951), (22508, 25951), (20048, 25969), (25007, 25997), (8482, 25999), (19887, 25999), (6247, 26003), (1494, 26017), (13941, 26017), (15870, 26017), (20726, 26017), (17637, 26029), (14788, 26041), (24390, 26053), (22753, 26099), (4707, 26141), (12111, 26141), (14344, 26177), (23051, 26177), (9756, 26189), (3742, 26209), (5630, 26209), (11537, 26227), (20255, 26227), (22162, 26227), (24724, 26227), (1982, 26249), (12211, 26249), (16483, 26249), (21819, 26249), (3178, 26251), (13277, 26261), (1184, 26263), (5112, 26267), (1314, 26293), (3796, 26293), (21856, 26293), (25617, 26293), (4367, 26297), (21169, 26297), (11713, 26309), (14761, 26309), (10114, 26317), (17963, 26321), (21418, 26321), (15532, 26339), (16553, 26339), (11382, 26347), (16796, 26347), (3382, 26371), (20738, 26387), (9063, 26393), (25011, 26399), (6624, 26407), (23770, 26407), (3524, 26417), (16170, 26417), (3566, 26423), (5160, 26431), (22138, 26431), (10578, 26437), (21517, 26437), (9140, 26449), (16753, 26449), (1731, 26459), (10078, 26459), (19327, 26459), (21779, 26459), (1018, 26479), (4963, 26479), (11953, 26489), (10111, 26497), (12343, 26497), (19530, 26513), (2227, 26561), (960, 26573), (5671, 26573), (7929, 26573), (12010, 26573), (12659, 26591), (18099, 26591), (1336, 26627), (16848, 26627), (18634, 26641), (7750, 26647), (15565, 26669), (5835, 26683), (21783, 26683), (2078, 26687), (17396, 26687), (14236, 26693), (26290, 26699), (11487, 26701), (20344, 26717), (1917, 26723), (13578, 26729), (7540, 26737), (12026, 26759), (1523, 26777), (15439, 26813), (8309, 26821), (11466, 26839), (21440, 26839), (22898, 26839), (24710, 26839), (10218, 26863), (22976, 26863), (2528, 26881), (3243, 26881), (868, 26891), (17509, 26891), (23711, 26893), (17051, 26903), (10560, 26953), (3688, 27043), (4338, 27043), (19044, 27059), (21333, 27061), (10393, 27073), (169, 27103), (5432, 27103), (6349, 27107), (26162, 27143), (4889, 27179), (11705, 27179), (15793, 27179), (21968, 27179), (10906, 27191), (22575, 27191), (20112, 27211), (22634, 27239), (2666, 27241), (3404, 27283), (17824, 27283), (1309, 27299), (9908, 27299), (19196, 27299), (24182, 27299), (6165, 27337), (6628, 27361), (7247, 27431), (24713, 27437), (643, 27449), (16860, 27449), (6796, 27457), (10382, 27457), (13960, 27457), (23773, 27457), (9095, 27481), (6476, 27487), (8625, 27529), (2333, 27541), (6160, 27541), (7701, 27541), (11344, 27541), (445, 27551), (6669, 27581), (3193, 27611), (25604, 27617), (6663, 27689), (4083, 27701), (10532, 27733), (12231, 27733), (21941, 27737), (13753, 27739), (8193, 27743), (21973, 27743), (14147, 27749), (24162, 27749), (355, 27751), (15717, 27751), (21170, 27767), (22072, 27773), (13275, 27791), (16113, 27793), (25447, 27803), (6373, 27817), (7525, 27817), (20268, 27817), (21465, 27817), (21375, 27823), (4997, 27827), (15409, 27827), (24743, 27851), (15089, 27883), (8623, 27893), (6182, 27917), (11121, 27917), (23480, 27943), (12229, 27947), (23260, 27947), (12234, 27953), (23575, 27967), (8380, 28019), (14252, 28019), (17655, 28027), (19276, 28027), (19728, 28031), (5882, 28051), (5685, 28057), (8927, 28057), (3710, 28069), (12290, 28069), (8126, 28081), (10325, 28081), (22007, 28087), (23954, 28097), (27612, 28097), (12167, 28099), (22926, 28109), (10867, 28111), (27989, 28111), (5457, 28163), (23914, 28163), (7713, 28183), (4236, 28201), (6422, 28201), (12017, 28279), (24029, 28283), (10798, 28289), (15815, 28297), (19266, 28297), (6506, 28307), (12648, 28307), (11967, 28309), (17922, 28309), (27100, 28319), (25405, 28349), (21533, 28403), (12387, 28409), (6276, 28411), (11017, 28411), (14856, 28411), (24670, 28411), (23346, 28429), (20954, 28433), (28026, 28433), (18951, 28439), (28400, 28447), (5265, 28463), (4781, 28477), (16174, 28477), (9243, 28513), (19395, 28517), (27895, 28537), (28087, 28541), (218, 28547), (11472, 28547), (4588, 28571), (22323, 28571), (2244, 28579), (13524, 28579), (10830, 28591), (18941, 28607), (76, 28619), (4108, 28619), (1914, 28621), (25312, 28621), (10056, 28631), (24626, 28631), (23211, 28643), (24144, 28643), (7206, 28657), (19495, 28661), (26537, 28661), (22258, 28687), (24636, 28687), (13303, 28697), (16749, 28697), (23245, 28703), (26676, 28703), (1421, 28711), (12183, 28711), (17889, 28711), (25926, 28711), (27521, 28723), (16012, 28729), (6661, 28751), (3846, 28753), (11882, 28759), (3627, 28771), (18022, 28771), (4956, 28789), (10594, 28793), (10100, 28813), (17721, 28813), (6091, 28817), (14821, 28817), (19071, 28837), (9620, 28843), (9577, 28859), (3597, 28867), (11275, 28867), (12122, 28879), (19495, 28901), (10313, 28921), (19187, 28921), (8041, 28927), (12556, 28933), (27674, 28933), (14056, 28949), (22436, 28949), (11786, 28961), (26086, 28979), (27364, 28979), (22766, 29009), (5837, 29017), (5770, 29021), (8006, 29021), (12929, 29023), (4578, 29033), (18975, 29059), (27602, 29059), (13131, 29063), (14514, 29063), (9007, 29077), (9543, 29077), (10761, 29077), (28840, 29077), (23813, 29101), (520, 29123), (15193, 29131), (19363, 29137), (27416, 29137), (1163, 29147), (4976, 29167), (15508, 29167), (13657, 29173), (27444, 29173), (6575, 29191), (10897, 29191), (16206, 29191), (24701, 29191), (8690, 29221), (11667, 29221), (17471, 29231), (7367, 29251), (14404, 29287), (2541, 29297), (7906, 29297), (5146, 29311), (13861, 29311), (15695, 29333), (4220, 29339), (8227, 29339), (8857, 29347), (5703, 29363), (5714, 29363), (2042, 29383), (474, 29389), (828, 29399), (2856, 29399), (9850, 29399), (15862, 29399), (8998, 29401), (17009, 29411), (21591, 29411), (22735, 29411), (26895, 29411), (21324, 29423), (22757, 29423), (22941, 29437), (2375, 29443), (18356, 29443), (3994, 29453), (11004, 29483), (23738, 29483), (773, 29501), (16374, 29531), (5563, 29537), (12112, 29537), (8553, 29573), (26103, 29573), (5092, 29581), (24401, 29581), (12209, 29587), (18966, 29587), (1891, 29599), (3704, 29629), (4244, 29629), (8876, 29641), (14742, 29663), (23925, 29663), (17193, 29669), (7114, 29683), (2246, 29717), (23062, 29717), (26029, 29753), (27468, 29753), (24422, 29761), (4152, 29833), (14947, 29837), (29370, 29837), (17669, 29851), (18579, 29851), (14261, 29867), (6402, 29873), (25409, 29879), (26998, 29879), (3684, 29917), (6483, 29917), (20261, 29917), (29403, 29917), (22055, 29983), (23617, 29983), (17716, 30011), (24734, 30011), (1808, 30029), (16747, 30047), (27563, 30047), (9851, 30059), (19140, 30089), (10330, 30097), (2298, 30103), (2339, 30103), (17551, 30113), (28117, 30133), (772, 30137), (28540, 30137), (19621, 30139), (1697, 30169), (25716, 30187), (6279, 30203), (14086, 30211), (11848, 30223), (15453, 30259), (27350, 30269), (10451, 30271), (16828, 30271), (9023, 30307), (13145, 30307), (21069, 30313), (8808, 30347), (785, 30389), (22044, 30389), (14104, 30391), (7810, 30403), (6298, 30431), (14128, 30431), (10792, 30449), (24781, 30449), (115, 30491), (8701, 30491), (9666, 30491), (12006, 30491), (25635, 30553), (19317, 30559), (22622, 30559), (6474, 30593), (26555, 30593), (10933, 30631), (27013, 30631), (3180, 30643), (8166, 30649), (8450, 30649), (528, 30661), (21779, 30661), (11879, 30689), (9791, 30697), (7329, 30703), (15091, 30703), (5631, 30713), (1321, 30727), (21102, 30727), (24718, 30803), (29181, 30803), (2723, 30817), (26167, 30829), (21170, 30839), (6984, 30841), (6381, 30859), (12250, 30859), (17038, 30869), (17852, 30881), (17233, 30893), (26139, 30893), (14637, 30937), (18789, 30949), (20528, 30949), (5349, 30971), (16431, 30977), (4320, 30983), (22329, 30983), (19732, 31013), (1390, 31051), (5094, 31063), (13281, 31069), (3420, 31079), (26799, 31121), (30029, 31121), (6590, 31139), (27321, 31139), (28892, 31139), (30611, 31139), (6400, 31147), (21429, 31147), (30894, 31153), (4812, 31219), (11467, 31219), (10649, 31223), (30212, 31223), (3094, 31237), (27055, 31237), (63, 31247), (18726, 31249), (7204, 31267), (15526, 31267), (16026, 31277), (2455, 31307), (17153, 31307), (17856, 31307), (25147, 31307), (15638, 31319), (30412, 31319), (13778, 31321), (27655, 31327), (27628, 31357), (11860, 31379), (16867, 31387), (23685, 31387), (14587, 31391), (16023, 31393), (28923, 31489), (21965, 31511), (10927, 31531), (8153, 31543), (25714, 31543), (4184, 31547), (14182, 31567), (15601, 31567), (21131, 31573), (19451, 31601), (7628, 31607), (27088, 31607), (27253, 31627), (18198, 31643), (7382, 31649), (15960, 31649), (23847, 31657), (4532, 31667), (7404, 31687), (21145, 31687), (8368, 31699), (24827, 31699), (4621, 31721), (8566, 31727), (3902, 31729), (20043, 31741), (25185, 31741), (21295, 31751), (22550, 31751), (2242, 31771), (2271, 31799), (9677, 31817), (28444, 31817), (15921, 31847), (27268, 31849), (6121, 31859), (17810, 31859), (25906, 31873), (27312, 31873), (7746, 31883), (26078, 31891), (17986, 31907), (24082, 31907), (2583, 31963), (31714, 31963), (17396, 31973), (18601, 31973), (19716, 31981), (27616, 31981), (29613, 31991), (30982, 31991), (16002, 32009), (27442, 32009), (1856, 32057), (19623, 32059), (21513, 32059), (3425, 32063), (11772, 32069), (12295, 32069), (19537, 32077), (7820, 32083), (8059, 32099), (10624, 32141), (23805, 32141), (30424, 32141), (31567, 32141), (30288, 32159), (6134, 32183), (25698, 32183), (16395, 32191), (1679, 32233), (32145, 32233), (1427, 32251), (13328, 32251), (17049, 32257), (28123, 32257), (11002, 32299), (15536, 32299), (380, 32303), (27285, 32303), (15968, 32321), (16485, 32327), (23735, 32327), (25976, 32363), (15032, 32371), (13061, 32377), (21760, 32381), (19676, 32413), (8422, 32441), (27029, 32443), (31383, 32443), (18372, 32467), (19092, 32467), (31216, 32497), (25168, 32503), (31077, 32503), (2629, 32507), (4930, 32531), (15445, 32531), (18685, 32531), (25999, 32531), (4577, 32561), (6907, 32561), (8545, 32563), (10564, 32563), (6008, 32573), (7649, 32573), (5372, 32579), (7243, 32587), (10633, 32587), (21575, 32587), (25720, 32587), (31627, 32603), (26820, 32611), (6017, 32647), (20605, 32647), (7118, 32687), (18732, 32693), (19822, 32693), (11483, 32707), (2987, 32717), (4845, 32719), (6087, 32749), (2436, 32771), (9274, 32771), (25295, 32771), (28534, 32771), (11041, 32779), (15087, 32801), (4005, 32803), (16618, 32803), (20541, 32803), (24439, 32803), (13843, 32831), (27913, 32833), (28070, 32833), (4229, 32839), (21273, 32843), (24141, 32843), (31439, 32869), (8384, 32887), (23719, 32887), (18512, 32909), (9344, 32911), (9375, 32911), (29367, 32917), (22181, 32933), (32860, 32941), (15123, 32969), (32677, 32969), (7372, 32971), (32573, 32971), (15637, 32983), (280, 32987), (9829, 32987), (17520, 32999), (28430, 32999), (15534, 33023), (19136, 33023), (12625, 33029), (7460, 33049), (21009, 33049), (3085, 33113), (4151, 33149), (12528, 33151), (9092, 33161), (22443, 33161), (4633, 33179), (31784, 33179), (16710, 33181), (33003, 33203), (1659, 33211), (16575, 33223), (23028, 33287), (945, 33289), (7109, 33301), (27282, 33331), (33311, 33331), (9388, 33343), (4521, 33353), (4746, 33353), (29881, 33359), (23543, 33403), (5670, 33413), (20672, 33413), (19896, 33427), (29637, 33479), (7415, 33493), (22798, 33493), (4080, 33529), (806, 33547), (11262, 33547), (12526, 33563), (8875, 33569), (7050, 33581), (28483, 33587), (14745, 33599), (4711, 33601), (3801, 33619), (24060, 33619), (32362, 33637), (17768, 33641), (24048, 33641), (12932, 33713), (23782, 33713), (31082, 33713), (33340, 33713), (8584, 33739), (18640, 33739), (20644, 33749), (32104, 33751), (13763, 33769), (26119, 33769), (27902, 33769), (33520, 33769), (3890, 33773), (30509, 33773), (11172, 33797), (17096, 33797), (17761, 33797), (21562, 33797), (13574, 33809), (32463, 33811), (2055, 33827), (30533, 33827), (14428, 33829), (18107, 33851), (18722, 33851), (13221, 33857), (27714, 33871), (17404, 33893), (28768, 33893), (23724, 33911), (1300, 33931), (14163, 33931), (11284, 33937), (11449, 33937), (2297, 33961), (13970, 33961), (10970, 33967), (17471, 33967), (19281, 33967), (20209, 33967), (9091, 33997), (9613, 33997), (8055, 34019), (27395, 34019), (767, 34031), (12581, 34031), (23888, 34033), (31591, 34033), (10853, 34039), (18642, 34039), (7148, 34057), (6629, 34061), (11583, 34061), (17202, 34061), (32705, 34061), (31089, 34127), (24747, 34157), (28236, 34157), (11357, 34159), (12435, 34171), (16149, 34171), (622, 34183), (10338, 34183), (25623, 34183), (31780, 34183), (1580, 34211), (29522, 34211), (15237, 34213), (22208, 34213), (14750, 34217), (13805, 34253), (2281, 34261), (4645, 34261), (14877, 34267), (17591, 34267), (4626, 34273), (5040, 34273), (12072, 34297), (20628, 34297), (121, 34303), (23691, 34313), (13525, 34319), (8510, 34327), (6920, 34337), (19057, 34337), (18464, 34351), (19578, 34351), (22873, 34361), (24460, 34361), (27562, 34367), (2002, 34369), (15111, 34369), (18555, 34369), (33067, 34369), (5631, 34381), (27358, 34381), (8962, 34429), (1944, 34439), (28358, 34439), (28849, 34457), (10989, 34471), (28518, 34471), (4722, 34511), (14483, 34511), (3288, 34513), (14517, 34519), (1069, 34537), (10577, 34583), (9423, 34589), (34026, 34589), (10366, 34591), (1249, 34607), (16181, 34607), (3158, 34613), (4899, 34613), (20658, 34631), (29571, 34631), (2406, 34673), (4057, 34673), (6180, 34673), (22027, 34673), (12902, 34679), (22707, 34693), (34314, 34693), (4368, 34703), (26220, 34703), (11694, 34729), (14224, 34739), (17002, 34747), (6887, 34763), (4756, 34807), (27502, 34807), (13492, 34819), (15124, 34819), (17675, 34819), (23344, 34819), (14552, 34847), (27831, 34847), (22894, 34871), (25466, 34883), (28025, 34883), (12247, 34913), (903, 34919), (5211, 34939), (14398, 34939), (391, 34949), (16795, 34949), (22209, 34961), (18947, 34963), (27143, 34963), (19562, 34981), (26104, 34981), (2131, 35027), (28371, 35027), (10925, 35051), (24959, 35051), (2169, 35069), (6330, 35081), (21667, 35081), (5375, 35083), (19220, 35083), (25210, 35111), (22693, 35117), (24807, 35117), (25952, 35117), (31896, 35117), (10459, 35141), (3686, 35149), (24922, 35153), (26955, 35153), (17172, 35159), (4052, 35201), (22606, 35201), (24956, 35227), (10460, 35251), (23636, 35257), (27281, 35279), (32143, 35279), (5798, 35311), (32392, 35311), (5554, 35317), (6056, 35323), (15140, 35323), (22133, 35323), (27314, 35323), (29977, 35327), (35192, 35327), (397, 35339), (14324, 35339), (31163, 35353), (12333, 35363), (32545, 35363), (14236, 35419), (15682, 35423), (26396, 35423), (29837, 35423), (34351, 35423), (6507, 35437), (31081, 35449), (34468, 35449), (9620, 35461), (10594, 35491), (29910, 35491), (20693, 35507), (25979, 35527), (12536, 35533), (23826, 35537), (26633, 35537), (26343, 35543), (33543, 35543), (6317, 35569), (13540, 35569), (9464, 35573), (9679, 35591), (24581, 35591), (9371, 35593), (7179, 35671), (8322, 35677), (4289, 35729), (13381, 35729), (21325, 35729), (32460, 35729), (3495, 35747), (19915, 35747), (4817, 35753), (15231, 35753), (1063, 35771), (7160, 35801), (12999, 35801), (23919, 35801), (27521, 35801), (10654, 35803), (6280, 35831), (31947, 35831), (33124, 35837), (34161, 35839), (15541, 35851), (22207, 35851), (32230, 35863), (2073, 35879), (29317, 35879), (1303, 35933), (24500, 35933), (3264, 35983), (19395, 35983), (8126, 35993), (5962, 35999), (25637, 35999), (22882, 36011), (22592, 36013), (31012, 36017), (8800, 36061), (14109, 36067), (29046, 36067), (28932, 36073), (18844, 36083), (26507, 36083), (27574, 36083), (35321, 36083), (17154, 36097), (18576, 36097), (31409, 36107), (32780, 36131), (24266, 36137), (27541, 36137), (25106, 36151), (10296, 36187), (16547, 36191), (26581, 36191), (3777, 36209), (12192, 36209), (32762, 36217), (13522, 36229), (5672, 36269), (17931, 36269), (19476, 36269), (29456, 36269), (14091, 36277), (9075, 36307), (26774, 36313), (2864, 36319), (8632, 36341), (24309, 36341), (3557, 36343), (15662, 36373), (24033, 36383), (33414, 36383), (4576, 36389), (28599, 36389), (4471, 36457), (35025, 36473), (469, 36479), (6825, 36479), (16377, 36493), (8171, 36497), (11288, 36497), (23997, 36497), (29535, 36497), (10478, 36529), (17713, 36529), (3511, 36551), (29862, 36551), (21070, 36563), (32024, 36563), (16701, 36583), (15779, 36587), (6999, 36599), (1265, 36607), (4745, 36637), (18603, 36637), (24432, 36637), (25491, 36637), (11755, 36653), (17102, 36671), (4543, 36683), (16366, 36697), (22050, 36697), (23722, 36709), (7854, 36713), (15845, 36713), (11627, 36721), (13487, 36761), (36550, 36761), (11409, 36767), (30971, 36767), (18154, 36779), (30780, 36779), (2109, 36781), (28027, 36787), (7002, 36847), (14290, 36847), (24603, 36847), (27796, 36847), (31392, 36857), (4536, 36871), (10868, 36877), (2638, 36887), (12670, 36887), (8859, 36919), (19208, 36919), (23611, 36923), (18886, 36931), (4018, 36979), (14004, 36997), (3294, 37003), (2589, 37013), (14825, 37013), (23568, 37019), (33597, 37039), (5064, 37049), (32240, 37049), (35584, 37087), (26282, 37097), (35449, 37097), (4835, 37123), (19717, 37139), (29389, 37159), (761, 37189), (6491, 37189), (1466, 37201), (21587, 37201), (24010, 37201), (27336, 37201), (3344, 37217), (10396, 37223), (30799, 37223), (17270, 37273), (22497, 37307), (8675, 37309), (15981, 37309), (5838, 37313), (33576, 37313), (35431, 37313), (37091, 37313), (27986, 37321), (33387, 37321), (9255, 37337), (10218, 37361), (37044, 37361), (18498, 37363), (35813, 37363), (11389, 37369), (1468, 37379), (2949, 37379), (25263, 37397), (11622, 37409), (16085, 37409), (9000, 37441), (36196, 37441), (18991, 37447), (10759, 37463), (978, 37483), (20470, 37483), (21343, 37489), (22617, 37493), (16108, 37511), (16066, 37537), (34340, 37547), (19634, 37561), (5681, 37573), (22458, 37573), (8215, 37579), (18953, 37579), (22650, 37579), (25337, 37579), (7549, 37591), (24915, 37607), (2746, 37619), (12985, 37633), (16963, 37633), (17782, 37663), (7197, 37691), (20226, 37691), (23251, 37691), (24705, 37691), (553, 37699), (4014, 37699), (35741, 37717), (22684, 37747), (29484, 37747), (14210, 37781), (1429, 37799), (22367, 37813), (243, 37831), (17543, 37831), (20827, 37847), (16319, 37853), (15542, 37861), (22855, 37871), (26743, 37871), (28852, 37871), (35160, 37871), (4332, 37879), (14092, 37879), (23896, 37889), (36733, 37889), (13945, 37951), (7938, 37967), (15317, 37967), (20937, 37967), (31739, 37967), (12713, 37993), (18475, 37993), (34048, 37997), (20155, 38047), (1398, 38053), (32558, 38053), (10824, 38083), (21370, 38113), (24512, 38113), (28867, 38119), (29155, 38153), (19847, 38167), (18797, 38177), (20333, 38177), (9306, 38183), (21320, 38189), (21572, 38189), (21070, 38197), (23356, 38197), (4913, 38201), (26846, 38219), (15966, 38231), (12924, 38237), (17593, 38237), (14278, 38261), (16345, 38261), (2366, 38273), (16488, 38273), (10566, 38299), (10041, 38303), (2413, 38327), (26735, 38327), (10694, 38329), (37334, 38329), (2495, 38351), (6379, 38371), (38025, 38371), (5066, 38377), (16552, 38431), (38333, 38447), (151, 38449), (426, 38449), (5629, 38453), (18269, 38453), (15099, 38459), (31771, 38461), (34722, 38461), (27562, 38557), (19358, 38561), (21662, 38561), (12600, 38567), (704, 38609), (7442, 38611), (27390, 38611), (23532, 38629), (31968, 38629), (28425, 38639), (4491, 38651), (34485, 38651), (10804, 38669), (15299, 38677), (18046, 38677), (24885, 38707), (31816, 38711), (30160, 38713), (36192, 38713), (27528, 38723), (31530, 38729), (14935, 38747), (24267, 38747)]
Quadratic Character Base: [(18965, 38767), (37817, 38783), (17362, 38803), (11580, 38821), (30708, 38821), (34103, 38851), (5325, 38861), (31618, 38861), (8835, 38873), (7014, 38891), (24537, 38891), (34099, 38903), (1749, 38933), (35068, 38933), (7127, 38953), (31035, 38953), (10173, 38959), (22129, 38959), (13005, 38971), (15206, 38993), (25033, 39019), (8724, 39023), (21406, 39023), (22311, 39023), (25602, 39023), (8724, 39041), (22756, 39041), (6308, 39047), (33047, 39047), (894, 39079), (9616, 39089), (27291, 39097), (262, 39103), (17818, 39103), (16787, 39107), (19029, 39133), (33234, 39133), (228, 39139), (13696, 39139), (9080, 39157), (10932, 39157), (5126, 39161), (32514, 39161), (32421, 39181), (4816, 39191), (22167, 39191), (17118, 39227), (20162, 39239), (37777, 39239), (3937, 39241), (21263, 39241), (13132, 39313), (34552, 39313), (35392, 39317), (3907, 39341), (13990, 39343), (10096, 39359), (29650, 39409), (31719, 39409), (23826, 39443)]
lengthRow = len(ratFactorBase) + len(algFactorBase) + len(quadCharBase) + 1
print(f'Sieving to find more than {lengthRow} smooth pairs')
Sieving to find more than 9062 smooth pairs
# def solve(n, m, f, d, aLb, aUb, bLb, bUb, depth, lengthRow, ratFactorBase, algFactorBase, quadCharBase):
# rMat = matrix(0, lengthRow)
# tuples = []
# rationalRemainingPrimes1 = set()
# rationalRemainingPrimes2 = set()
# rationalRemainingPrimes3 = set()
# def get_factors(num, algebraic=False):
# result = []
# len_divisors = len(algFactorBase) if algebraic else len(ratFactorBase)
# for i in range(len_divisors):
# if num == 1:
# break
# thisFactor = algFactorBase[i][1] if algebraic else ratFactorBase[i]
# exponentTracker = 0
# while thisFactor.divides(num):
# exponentTracker += 1
# num //= thisFactor
# if exponentTracker > 0:
# result.append((thisFactor, exponentTracker))
# if num != 1 and is_prime(num) and (not algebraic):
# if num in rationalRemainingPrimes1:
# if num in rationalRemainingPrimes2:
# rationalRemainingPrimes3.add(num)
# else:
# rationalRemainingPrimes2.add(num)
# else:
# rationalRemainingPrimes1.add(num)
# done = (num == 1)
# return result, done
# for a in range(aLb, aUb):
# for b in range(bLb, bUb):
# r = a + (b * m)
# rAlg = (power_mod((-1 * b), d, n) * use_funct(f, (a * power_mod(b, -1, n) * -1), n)) % n
# rAlg2 = abs(rAlg - n)
# if r == 0 or rAlg == 0:
# continue
# depthAdditions = []
# for i in range(depth):
# depthAdditions.append(rAlg2 + (n * i))
# factorR = get_factors(int(r))
# rFactors = factorR[0]
# ratFactBaseMatch = factorR[1]
# if not ratFactBaseMatch:
# continue
# factorRAlg = get_factors(int(rAlg), True)
# rAlgFactors = factorRAlg[0]
# algFactBaseMatch = factorRAlg[1]
# depthAlgFactBaseMatch = False
# if not algFactBaseMatch:
# for i in range(depth):
# getRAlgDepthierFactors = get_factors(int(depthAdditions[i]) % n, True)
# rAlgDepthFactors = getRAlgDepthierFactors[0]
# depthAlgFactBaseMatch = getRAlgDepthierFactors[1]
# if depthAlgFactBaseMatch:
# rAlgFactors = rAlgDepthFactors
# break
# if not (algFactBaseMatch or depthAlgFactBaseMatch):
# continue
# assert rAlgFactors != None
# newRowR = [0 for j in range(lengthRow)]
# newRowR[0] = 0 if r >= 0 else 1
# for i in range(len(ratFactorBase)):
# for j in range(len(rFactors)):
# if ratFactorBase[i] == rFactors[j][0]:
# newRowR[i + 1] = rFactors[j][1] % 2
# break
# usedPrimes = set()
# for i in range(len(algFactorBase)):
# thisR = algFactorBase[i][0]
# thisPrime = algFactorBase[i][1]
# for j in range(len(rAlgFactors)):
# if thisPrime == rAlgFactors[j][0]:
# if thisPrime in usedPrimes:
# if (a % thisPrime) == ((-1 * b * thisR) % thisPrime):
# newRowR[i + 1 + len(ratFactorBase)] = rAlgFactors[j][1] % 2
# else:
# if (a % thisPrime) == (-1 * b * thisR) % thisPrime:
# newRowR[i + 1 + len(ratFactorBase)] = rAlgFactors[j][1] % 2
# usedPrimes.add(thisPrime)
# for i in range(len(quadCharBase)):
# s = quadCharBase[i][0]
# q = quadCharBase[i][1]
# if kronecker((a + b * s), q) == 1:
# newRowR[i + 1 + len(ratFactorBase) + len(algFactorBase)] = 0
# elif kronecker((a + b * s), q) == 0:
# newRowR[i + 1 + len(ratFactorBase) + len(algFactorBase)] = 1
# else:
# newRowR[i + 1 + len(ratFactorBase) + len(algFactorBase)] = 1
# rMat = rMat.insert_row(rMat.nrows(), newRowR)
# tuples.append((a, b))
# if rMat.nrows() < lengthRow:
# print(f"You're going to need to increase the sieve size to get about {lengthRow - rMat.nrows()} more rows.")
# return rMat, tuples, False, lengthRow - rMat.nrows(), rationalRemainingPrimes2, rationalRemainingPrimes3
# return rMat, tuples, True, rationalRemainingPrimes2, rationalRemainingPrimes3
import numpy as np
from sympy import isprime, jacobi_symbol
from sympy.ntheory.modular import solve_congruence
# from sympy.ntheory.residue_ntheory import kronecker_symbol
def solve(n, m, f, d, aLb, aUb, bLb, bUb, depth, lengthRow, ratFactorBase, algFactorBase, quadCharBase):
rMat = np.zeros((0, lengthRow))
tuples = []
rationalRemainingPrimes1 = set()
rationalRemainingPrimes2 = set()
rationalRemainingPrimes3 = set()
def get_factors(num, algebraic=False):
result = []
len_divisors = len(algFactorBase) if algebraic else len(ratFactorBase)
for i in range(len_divisors):
if num == 1:
break
thisFactor = algFactorBase[i][1] if algebraic else ratFactorBase[i]
exponentTracker = 0
# while thisFactor.divides(num):
while num % thisFactor == 0:
exponentTracker += 1
num //= thisFactor
if exponentTracker > 0:
result.append((thisFactor, exponentTracker))
if num != 1 and isprime(num) and (not algebraic):
if num in rationalRemainingPrimes1:
if num in rationalRemainingPrimes2:
rationalRemainingPrimes3.add(num)
else:
rationalRemainingPrimes2.add(num)
else:
rationalRemainingPrimes1.add(num)
done = (num == 1)
return result, done
for a in range(aLb, aUb):
for b in range(bLb, bUb):
r = a + (b * m)
rAlg = (pow((-1 * b), d, n) * use_funct(f, (a * pow(b, -1, n) * -1), n)) % n
rAlg2 = abs(rAlg - n)
if r == 0 or rAlg == 0:
continue
depthAdditions = []
for i in range(depth):
depthAdditions.append(rAlg2 + (n * i))
factorR = get_factors(int(r))
rFactors = factorR[0]
ratFactBaseMatch = factorR[1]
if not ratFactBaseMatch:
continue
factorRAlg = get_factors(int(rAlg), True)
rAlgFactors = factorRAlg[0]
algFactBaseMatch = factorRAlg[1]
depthAlgFactBaseMatch = False
if not algFactBaseMatch:
for i in range(depth):
getRAlgDepthierFactors = get_factors(int(depthAdditions[i]) % n, True)
rAlgDepthFactors = getRAlgDepthierFactors[0]
depthAlgFactBaseMatch = getRAlgDepthierFactors[1]
if depthAlgFactBaseMatch:
rAlgFactors = rAlgDepthFactors
break
if not (algFactBaseMatch or depthAlgFactBaseMatch):
continue
assert rAlgFactors != None
newRowR = [0 for j in range(lengthRow)]
newRowR[0] = 0 if r >= 0 else 1
for i in range(len(ratFactorBase)):
for j in range(len(rFactors)):
if ratFactorBase[i] == rFactors[j][0]:
newRowR[i + 1] = rFactors[j][1] % 2
break
usedPrimes = set()
for i in range(len(algFactorBase)):
thisR = algFactorBase[i][0]
thisPrime = algFactorBase[i][1]
for j in range(len(rAlgFactors)):
if thisPrime == rAlgFactors[j][0]:
if thisPrime in usedPrimes:
if (a % thisPrime) == ((-1 * b * thisR) % thisPrime):
newRowR[i + 1 + len(ratFactorBase)] = rAlgFactors[j][1] % 2
else:
if (a % thisPrime) == (-1 * b * thisR) % thisPrime:
newRowR[i + 1 + len(ratFactorBase)] = rAlgFactors[j][1] % 2
usedPrimes.add(thisPrime)
for i in range(len(quadCharBase)):
s = quadCharBase[i][0]
q = quadCharBase[i][1]
if jacobi_symbol((a + b * s), q) == 1:
newRowR[i + 1 + len(ratFactorBase) + len(algFactorBase)] = 0
elif jacobi_symbol((a + b * s), q) == 0:
newRowR[i + 1 + len(ratFactorBase) + len(algFactorBase)] = 1
else:
newRowR[i + 1 + len(ratFactorBase) + len(algFactorBase)] = 1
rMat = np.vstack([rMat, newRowR])
tuples.append((a, b))
if rMat.shape[0] < lengthRow:
print(f"You're going to need to increase the sieve size to get about {lengthRow - rMat.shape[0]} more rows.")
return rMat, tuples, False, lengthRow - rMat.shape[0], rationalRemainingPrimes2, rationalRemainingPrimes3
return rMat, tuples, True, rationalRemainingPrimes2, rationalRemainingPrimes3
result = solve(n, m, f, d, aLb, aUb, bLb, bUb, depth, lengthRow, ratFactorBase, algFactorBase, quadCharBase)
rMat = result[0]
tuples = result[1]
remainingPrimes2 = result[-2]
remainingPrimes3 = result[-1]
print(f'{len(tuples)} total smooth pairs found.')
You're going to need to increase the sieve size to get about 9055 more rows.
7 total smooth pairs found.
rMat
rMat
array([[0., 1., 1., ..., 0., 1., 1.],
[0., 0., 1., ..., 1., 0., 0.],
[0., 0., 0., ..., 0., 0., 1.],
...,
[0., 1., 1., ..., 0., 1., 1.],
[0., 0., 1., ..., 0., 1., 0.],
[0., 0., 0., ..., 1., 1., 0.]])
# M = matrix(GF(2), len(tuples), rMat)
# solutions = M.kernel().basis_matrix().rows()
# print(f'{len(solutions)} total bases found.')
from sympy import Matrix
# 假设 rMat 是已经计算好的矩阵,是一个二维列表,元素为 0 或 1
rMat_rows = rMat # 确保 rMat 是二维列表
# 创建一个普通矩阵 M
M = Matrix(rMat_rows)
# 将矩阵元素映射到 GF(2) 域
M = M.applyfunc(lambda x: x % 2)
# 计算 M 的零空间(核),得到基向量的列表
solutions = M.nullspace()
# 打印解的总数
print(f'{len(solutions)} total bases found.')
9057 total bases found.
计算向量与整数对的模 N 乘积
from sympy import symbols, Poly, QQ
from sympy.ntheory.primetest import is_square
## 计算向量与整数对的模 N 乘积。
def compute_integer_product_of_pairs(m, N, integerPairs, vector):
"""
计算向量与整数对的模 N 乘积。
:param m: 乘积的模数。
:param N: 模 N。
:param integerPairs: 整数对的列表。
:param vector: 解向量。
:return: 模 N 下的乘积。
"""
prod = 1
for j in range(len(vector)):
if vector[j] == 1:
prod *= integerPairs[j][0] * integerPairs[j][1]
prod %= N # 保持运算在模 N 下进行
# prod = prod * (integerPairs[j][0] + m * integerPairs[j][1]) % N
return prod
def find_square(f, betaSquared, polynomialRing):
# 定义多项式变量和多项式 f
a = symbols('a')
# 创建数域
K = QQ.algebraic_field(f)
# K.<a> = NumberField(f)
beta2 = betaSquared(a)
if not beta2.is_square():
return False
return polynomialRing(beta2.sqrt().list())
def compute_number_field_product_of_pairs(polynomialRing, f, integerPairs, vector):
productPolynomial = polynomialRing([1])
for j in range(len(vector)):
if vector[j] == 1:
linearPoly = polynomialRing([integerPairs[j][0], integerPairs[j][1]])
productPolynomial = productPolynomial * linearPoly
productPolynomial = productPolynomial.mod(f)
return productPolynomial
def is_square_modulo(n, modulo):
"""
检查 n 是否是在模 modulo 下的平方数。
:param n: 待检查的数。
:param modulo: 模数。
:return: 布尔值,表示 n 是否为模 modulo 下的平方数。
"""
# 在模 modulo 下检查所有可能的平方数
for i in range(modulo):
if (i * i) % modulo == n:
return True
return False
def compute_difference_of_squares(polynomialRing, f, m, N, integerPairs, vector):
found_squares = False
# 使用新的函数计算模 N 下的乘积
vSquared = compute_integer_product_of_pairs(m, N, integerPairs, vector)
# 使用新的函数检查是否是模 N 下的平方数
if is_square_modulo(vSquared, N):
# 计算数域上的乘积
betaSquared = compute_number_field_product_of_pairs(polynomialRing, f, integerPairs, vector)
# 寻找平方根
beta = find_square(f, betaSquared, polynomialRing)
if beta:
u = beta(m) % N
v = vSquared.sqrt().lift() # 这里可能需要修改,根据 vSquared 的类型和实现方式
found_squares = True
return found_squares, betaSquared, beta, u, v
else:
pass
else:
pass
return found_squares, 'Filler Word.'
f
[1, 3, 664162933718903, 254101951372902, 495910785483428]
创建一个给定系数的多项式
from sympy import gcd
def polynomialRing(coeffs, domain=ZZ):
"""
创建一个给定系数的多项式。
:param coeffs: 多项式的系数列表,从最高次项到常数项。
:param domain: 多项式的定义域,默认为整数域 ZZ。
:return: SymPy 多项式对象。
"""
x = symbols('x') # 创建一个符号变量
return Poly(coeffs, x, domain=domain)
nonTrivialFactorizations = 0
if result[2] or len(solutions):
R = polynomialRing(f[::-1])
for i in range(len(solutions)):
tempRow = solutions[i]
integerPairs = tuples
vector = tempRow
result = compute_difference_of_squares(R, f, m, n, integerPairs, vector)
if result[0] == True:
u = result[3]
v = result[4]
if u != v:
if gcd(n, u + v) != 1 and gcd(n, u + v) != n:
print(f'Square Root 1: {result[3]}, Square Root 2: {result[4]}')
print(f'Factors are: {gcd(n, u - v)} and {gcd(n, u + v)}')
nonTrivialFactorizations += 1
else:
pass
else:
pass
print(f'Non-trivial factorizations: {nonTrivialFactorizations}')
hello,我是 是Yu欸 。如果你喜欢我的文章,欢迎三连给我鼓励和支持:👍点赞 📁 关注 💬评论,我会给大家带来更多有用有趣的文章。
原文链接 👉 ,⚡️更新更及时。
欢迎大家点开下面名片,添加好友交流。