您现在的位置是:首页 >技术杂谈 >1346 :孪生素数【C/C++/Java/Python】(基础程序设计,for循环,函数)网站首页技术杂谈

1346 :孪生素数【C/C++/Java/Python】(基础程序设计,for循环,函数)

半零落 2024-08-10 00:01:02
简介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

思路:

  1. 定义一个函数 f(x),用于判断一个数 x 是否为素数。
  2. 接收用户输入,将输入的两个整数分别赋值给变量 nm
  3. 定义变量 flag 并初始化为 0,用于标记是否找到了孪生素数对。
  4. 如果 n 是偶数,将其增加 1,以保证从奇数开始遍历。
  5. 使用 range 函数从 n 开始到 m-1 结束,步长为 2,即遍历所有奇数。
  6. 在每个奇数 i 上进行如下操作:
    • 调用函数 f(i) 判断 i 是否为素数。
    • 如果 i 是素数,进一步判断 i+2 是否也是素数。
    • 如果 ii+2 都是素数,输出它们,并将 flag 设置为 1,表示找到了孪生素数对。
    • 如果找到了孪生素数对,跳出循环。
  7. 如果 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')

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。