您现在的位置是:首页 >技术杂谈 >1346 :孪生素数【C/C++/Java/Python】(基础程序设计,for循环,函数)网站首页技术杂谈
1346 :孪生素数【C/C++/Java/Python】(基础程序设计,for循环,函数)
简介1346 :孪生素数【C/C++/Java/Python】(基础程序设计,for循环,函数)
题目描述
孪生素数是指两个素数的差值刚好是2,比如3和5,5和7,11和13都是孪生素数。19和23不是孪生素数。
根据题目给定的范围【n,m】,求出其中的孪生素数并输出。如果范围内有多对孪生素数,输出最小的那对。如果没有孪生素数,则输出“none”
例如给定【100,110】,应输出孪生素数为101和103。再给定【1000, 1100】,应输出:1019 和 1021
例如给定【120,130】,不存在孪生素数,应输出none
提示
输出的字符串none全是小写
输入输出格式
输入格式
输出两个正整数n和m,表示闭区间的两端,中间用空格分隔,题目保证:2≤n≤m≤1,000,000,000
输出格式
如果存在孪生素数,则按照从小到大的顺序输出这两个素数,中间用空格分隔。如果不存在孪生素数,则输出:none
输入输出样例
输入
10000 100100
输出
10007 10009
思路:
- 定义一个函数
f(x)
,用于判断一个数x
是否为素数。 - 接收用户输入,将输入的两个整数分别赋值给变量
n
和m
。 - 定义变量
flag
并初始化为 0,用于标记是否找到了孪生素数对。 - 如果
n
是偶数,将其增加 1,以保证从奇数开始遍历。 - 使用
range
函数从n
开始到m-1
结束,步长为 2,即遍历所有奇数。 - 在每个奇数
i
上进行如下操作:- 调用函数
f(i)
判断i
是否为素数。 - 如果
i
是素数,进一步判断i+2
是否也是素数。 - 如果
i
和i+2
都是素数,输出它们,并将flag
设置为 1,表示找到了孪生素数对。 - 如果找到了孪生素数对,跳出循环。
- 调用函数
- 如果
flag
仍然为 0,表示没有找到孪生素数对,则输出 "none"。
孪生素数是指相邻两个素数之间的差恰好为 2 的素数对,例如 (3, 5)、(5, 7)、(11, 13) 等。代码通过遍历给定范围内的奇数,并利用 f(x)
函数判断是否为素数,找到了符合条件的孪生素数对后输出。如果没有找到孪生素数对,则输出 "none"。
def f(x):
if x<2:
return False
if x== 2:
return True
for i in range(3,int(x**0.5)+1,2):
if x%i==0:
return False
else:
return True
n,m=map(int,input().split())
flag=0
if n%2 ==0:
n += 1
for i in range(n,m-1,2):
if f(i):
if f(i+2):
print(f'{i}{i+2}')
flag=1
break
if flag==0:
print('none')
风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。