美文网首页
使用生成器

使用生成器

作者: 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