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

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

http://www.nowcoder.com/practice/f8538f9ae3f1484fb137789dec6eedb9

逼近法

def isPrime(num):#定义一个素数判断函数
    for i in range(2,int(pow(num,0.5))+1):
        if num%i==0:
            return False
        else:
            pass
    return True
while True:
    try:
        n=int(input())
        for i in range(2,n//2+1):#截断整数部分
            if isPrime(i)and isPrime(n-i):#从两端开始逼近
                a,b=i,n-i
        print(a);print(b)
    except:
        break

下面这个方法是从中间往两边扩,理论上应该更快些

import math

def isPrime(n):
    for i in range(2, int(math.sqrt(n)) + 1):
        if n % i == 0:
            return False
    return True

while True:
    try:
        num ,start= int(input()) // 2,1
        if num%2==1:
            start=0
        for i in range(start, num, 2):#确定了奇偶,步子就大些
            a, b = num + i, num - i
            if isPrime(a) and isPrime(b):
                print(b)
                print(a)
                break

    except:
        break
全部评论
从两端逼近的是用的什么语法啊
1 回复 分享
发布于 2022-01-25 16:04
我测试两个方法速度差不多,第一种内存还少一些
点赞 回复 分享
发布于 2021-12-05 15:10
4需要单独判断
点赞 回复 分享
发布于 2022-02-26 21:31
为啥return要和上面的for对齐?哪位大佬可以给我解下惑
点赞 回复 分享
发布于 2022-07-13 23:42

相关推荐

过往烟沉:我说什么来着,java就业面就是广!
点赞 评论 收藏
分享
6 1 评论
分享
牛客网
牛客企业服务