|
考虑到素数分布的周期性和对称性,将分段周期定为前10个素数的乘积6469693230,抽查范围取
前5个素数的乘积2320,最后把余数部分在周期中的占比也校正进去。
因为数据的一部分来自实实在在的素数分拆,并非纯理论分析,所以会接近真值一点儿!
--------------------------------------------------------------------------------------------------
2022-09-12 21:19:09
G(10000000000000000) = 6721091306526 G(10000000000000002) = 10331063293924
用时 19210.26900959015 秒
--------------------------------------------------------------------------------------------------
print(dt.datetime.now().strftime("%F %T"))
start = tm.time()
m = 10 ** 16 # 1992249998172004
n, n1, n2 = m + 2, 0, 0
m0 = m // 6469693230 >> 1
m1 = m % 6469693230 >> 2 << 1
for i in range(m0):
j = i * 6469693230 + m1
for k in range(1, 2310, 2):
l = j - k
if isPrime(l):
if isPrime(m - l): n1 += 1
if isPrime(n - l): n2 += 1
n1 = n1 * 2800733 * (1 + m1 * 2 / m)
n2 = n2 * 2800733 * (1 + m1 * 2 / m)
print(f'G({m}) = {round(n1)} G({n}) = {round(n2)}')
print("用时 {0} 秒".format(tm.time() - start))
|
|