我们先来考虑几个小问题作为铺垫,给定一个数字,判断这个数字是不是为质数。 输入:
3
输出
3
代码如下:
num = 3if 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 = 20list1 = []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
输出:
713示例2
输入:
4
输出:
22
解题思路:
像第二个小问题一样,先求出小于该偶数的所有素数集合列表。再从列表中选去两个差值最小的素数输出第一个输出的素数应该小于第二个输出的素数。
代码如下:
number = 20list1 = []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 = 0small = 0min1 = 100for i in list1: for j in list1: if i + j == number and j >= i and j – i < min1: small = i big = jprint(small)print(big)
特别注意: 这里的??j???可以等于??i??。
码字不易,如果大家觉得有用,请高抬贵手给一个赞让我上推荐让更多的人看到吧~
绚丽的民族风情,悠久的历史文化。抛开尘世的纷扰,