把一个偶数拆成两个不同素数的和,有几种拆法呢? 现在来考虑考虑这个问题,给你一个不超过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)
第二个解法一样先打表,遍历第一个数,第二个数用二分法找。