-
isPrime函数判断一个数是不是素数
-
prime是一个素数生成器
-
main函数的功能是,判断一个数可以由多少对素数之和组成
-
算法:对素数生成器中的数,去判断差值是否是素数
-
需要改进:判断差值是否是素数,直接判断差值是否在生成器中最好了,但是最同一个生成器判断两次会导致终止。。
todo! -
思路2,当要求的数不太大的时候,我们可以直接用列表保存起来。此时求所有的素数有一个更好的算法:
如果一个数不被其前面所有的素数整除,那么它就是素数
所以我们可以一边算一遍更新素数列表
def isPrime(num):
rem=1
for x in range(2,num):
rem*=num%x
if rem!=0:
return True
def prime(n):
num=1
while num<=n:
if isPrime(num):
yield (num)
num+=1
def func(x):
global pairs
remain=inputX-x
if remain in gen2:
print('remain is %d' %remain)
pairs+=1
if __name__=='__main__':
inputX=int(input('input a number: '))
gen=prime(inputX)
# gen2=prime(inputX)
# for xx in gen2:
# print(xx)
pairs=0
for x in gen:
#print('prime %d:'%x)
remain=inputX-x
if isPrime(remain):
#print('remain is %d' %remain)
if(x<=inputX/2):
pairs+=1
print(pairs)
网友评论