题目描述
定义两个相差为 2的素数称为素数对,如 5 和 7,17 和 19 等,要求找出所有两个数均不大于 n 的素数对。
输入格式
一个正整数 n。
输出格式
所有小于等于 n的素数对。每对素数对输出一行,中间用单个空格隔开。若没有找到任何素数对,输出 empty
。
输入输出样例
输入 #1
10
输出 #1
3 5 5 7
def find_primes(n):
if n<=1:
return False
for j in range(2, int(n ** 0.5) + 1):
if n % j == 0:
return False
return True
x=int(input())
result=[]
r=0
for i in range(2,x+1):
if find_primes(i):
result.append(i)
if len(result)<=1:
print('empty')
for i in range(len(result)-1):
if result[i+1]-result[i]==2:
r=r+1
print("%d %d" % (result[i],result[i+1]))
if r==0:
print('empty')
解析:
- 在昨天的基础上,今天就好理解啦
- 依次判断范围内的数是否为素数,如果是,将该数添加到列表result中。
- 得到素数列表后,如果列表中只有一个数,则不满足题意,输出对应结果。
- 如果长度大于1,则判断两个连着的数的差是否为2,如果是,输出即可。
加油呀~