AcWing 1292. 哥德巴赫猜想
原题链接
简单
作者:
叶枝黎曼
,
2020-10-31 11:34:27
,
所有人可见
,
阅读 405
素数筛法与素数判断
筛法部分这里用python做一个简单的线性筛
判断部分就简单的采用试除法,如果想追求更快可以利用线性筛过程种的vis数组的false情况来判断(可以但是没必要)
python版本
#哥德巴赫猜想
def getPrimes(N):
for i in range(2,N+1):
if vis[i] == False:
primes.append(i)
j = 0
while primes[j]*i <= N:
vis[primes[j]*i] = True
if i % primes[j] == 0:
break
j += 1
def isP(x):
for i in range(2,int(pow(x,0.5))+1):
if x % i == 0:
return False
return True
vis = [False]*(10000 + 1)
primes = []
getPrimes(10000)
while True:
n = int(input())
if n == 0:
break
for i in range(1,n+1):
if isP(n - primes[i]):
print('%d = %d + %d'%(n,primes[i],n - primes[i]))
break