美文网首页
使用生成器

使用生成器

作者: AwesomeAshe | 来源:发表于2016-09-17 12:06 被阅读23次
  • 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)

相关文章

网友评论

      本文标题:使用生成器

      本文链接:https://www.haomeiwen.com/subject/rkziettx.html