题解 | #查找组成一个偶数最接近的两个素数#

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

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)
 

本文题目:查找组成一个偶数最接近的两个素数_牛客题霸_牛客网

本文:思路启发来源:五分钟小知识:如何用算法高效寻找素数?_吴师兄学算法

全部评论

相关推荐

11-11 14:21
西京学院 C++
无敌混子大王:首先一点,不管学校层次怎么样,教育经历放在第一页靠上位置,第一页看不到教育经历,hr基本直接扔掉了
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务