是个传颂厨

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
把一个偶数拆成两个不同素数的和,有几种拆法呢?
现在来考虑考虑这个问题,给你一个不超过10000的正的偶数n,
计算将该数拆成两个不同的素数之和的方法数,并输出。
如n=10,可以拆成3+7,只有这一种方法,因此输出1.
第一个解法:一万比较小,先打表,然后两个表一个个遍历,非常笨拙地方法。
      最后记得除以2,因为有重复的一遍。例如:10=3+7,10=7+3.多算了一遍。

def way(n):
    num=[]
    f=0
    for i in range(2,n+1):
        t=0
        for j in range(2,i):
            if i%j==0:
                t=1
                break
        if t==0:num.append(i)
    for k in num:
        for q in num:
            if k+q==n and k!=q:f+=1
    return f/2
print way(n)

第二个解法一样先打表,遍历第一个数,第二个数用二分法找。

posted on 2016-03-22 16:55  是个传颂厨  阅读(196)  评论(0编辑  收藏  举报