题解 | #查找组成一个偶数最接近的两个素数#
查找组成一个偶数最接近的两个素数
https://www.nowcoder.com/practice/f8538f9ae3f1484fb137789dec6eedb9
import sys
#定义一个判断素数的遍历方法,这里的n是不是平方根对这种思路的算法影响不大
def isPrime(n):
for i in range(2,n):
if n % i == 0:
#碰到整除的说明不是素数
return False
return True
n = int(input())
#数组从0开始,好处是index是对应素数,1代表是素数,0则不是
prime_list = [1 for _ in range(n+1)]
#初始化多余数据 0 1
prime_list[0]=prime_list[1]=0
for i in range(2,n+1):
#从2开始遍历,如果标记是素数,算了一下确认是素数,则其倍数位置都不是素数
if prime_list[i] == 1 :
if isPrime(i):
for j in range(i**2,n+1,i):
#此处起点二次方可以免除重复赋值,原理:素数试除法:除数大于1且小于等于n的平方根
#步进i代表倍数,n+1是上限
prime_list[j] = 0
#偶数n对半,向左向右遍历,如果两个都素,就可以输出,此时距离最近
n1=n2=n//2
while prime_list[n1]+prime_list[n2] != 2:
n1 -= 1
n2 += 1
print(n1)
print(n2)
本文题目:查找组成一个偶数最接近的两个素数_牛客题霸_牛客网
本文:思路启发来源:五分钟小知识:如何用算法高效寻找素数?_吴师兄学算法