当前位置 : 主页 > 编程语言 > java >

60---查找组成一个偶数最接近的两个素数

来源:互联网 收集:自由互联 发布时间:2022-07-14
我们先来考虑几个小问题作为铺垫,给定一个数字,判断这个数字是不是为质数。 输入: 3 输出 3 代码如下: num = 3 if num = 1 : print ( f" { num } 不是质数" ) else : for i in range ( 2 , num ): if


我们先来考虑几个小问题作为铺垫,给定一个数字,判断这个数字是不是为质数。
输入:

3

输出

3

代码如下:

num = 3
if num <= 1:
print(f"{num} 不是质数")
else:
for i in range(2, num):
if num % i == 0:
print(f"{num} 不是质数")
break

else:
print(f"{num} 是质数")
"""
3 是质数
"""

这里我们用到了​​for-else​​循环体结构,非常方便。

进一步我们再考虑一个小问题,给定一个值,求出小于该值的所有素数。
输入:

20

输出:

2,3,5,7,11,13,17,19

代码如下:

number = 20
list1 = []
for num in range(number + 1):
if num <= 1:
continue
else:
for i in range(2, num):
if num % i == 0:
break

else:
list1.append(num)

print(list1)
"""
[2, 3, 5, 7, 11, 13, 17, 19]
"""

接下来我们进入正题,查找组成一个偶数最接近的两个素数。

描述

任意一个偶数(大于2)都可以由2个素数组成,组成偶数的2个素数有很多种情况,本题目要求输出组成指定偶数的两个素数差值最小的素数对。

数据范围:输入的数据满足

输入描述:

输入一个大于2的偶数

输出描述:

从小到大输出两个素数

示例1

输入:

20

输出:

7
13

示例2

输入:

4

输出:

2
2

解题思路:

  • 像第二个小问题一样,先求出小于该偶数的所有素数集合列表。
  • 再从列表中选去两个差值最小的素数输出
  • 第一个输出的素数应该小于第二个输出的素数。
  • 代码如下:

    number = 20
    list1 = []
    for num in range(number + 1):
    if num <= 1:
    continue
    else:
    for i in range(2, num):
    if num % i == 0:
    break

    else:
    list1.append(num)

    big = 0
    small = 0
    min1 = 100
    for i in list1:
    for j in list1:
    if i + j == number and j >= i and j - i < min1:
    small = i
    big = j

    print(small)
    print(big)

    特别注意: 这里的​​j​​​可以等于​​i​​。

    码字不易,如果大家觉得有用,请高抬贵手给一个赞让我上推荐让更多的人看到吧~


    上一篇:如何快速打开Visual Studio中的Solution Explorer
    下一篇:没有了
    网友评论