问题描述:
若两个素数之差为2,则这两个素数就是孪生素数。
编写程序找出1~100之间的所有孪生素数。
我的代码:import math
def prime(n):
count=0
for i in range(2,int(math.sqrt(n))+1):
if n%i==0:
count=1
i+=1
if count==1:
return None
else:
return True
a=[]
for j in range(2,100):
if prime(j)==True:
a.append(j)
for k in range(len(a)-1):
if a[k]+2==a[k+1]:
print a[k],a[k+1]
结果:
[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97]
3 5
5 7
11 13
17 19
29 31
41 43
59 61
71 73
我的思路:
而且一个素数的孪生素数必然是在其左右的,所以判断是否满足a[k]+2==a[k+1]关系,满足的两素数即为孪生素数,注意,此时的循环范围为len(a)-1,如果是a[k-1]+2=a[k]的话,那么for循环就应为range(1,len(a));
示例代码:#筛法找素数: