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

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

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

逼近法(注:这第一种是从两端逼近,不严谨,不见得两数绝对值最小,重点请看第二种)

def isPrime(n):    #判断素数
    if n==2 or n==3:
       return True
    elif n<2:
       return False
    else:
      for i in range(2, int(n**0.5) + 1):
          if n % i == 0:
              return False
      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

下面这个方法是从中间往两边扩,可保证两数绝对值最小,且理论上应该更快些

def isPrime(n):   #判断素数
    if n==2 or n==3:
       return True
    elif n<2:
       return False
    else:
      for i in range(2, int(n**0.5) + 1):
          if n % i == 0:
              return False
      return True

while True:
    try:
        	num=int(input())
            i=0;mid=num//2
            while i<mid:
                a,b=mid-i,mid+i
                if isPrime(a) and isPrime(b):
                    print(a)
                    print(b)
                    break
                else:
                    i+=1
    except:
        break
全部评论
从两端逼近的是用的什么语法啊
1 回复 分享
发布于 2022-01-25 16:04
为啥return要和上面的for对齐?哪位大佬可以给我解下惑
点赞 回复 分享
发布于 2022-07-13 23:42
4需要单独判断
点赞 回复 分享
发布于 2022-02-26 21:31
我测试两个方法速度差不多,第一种内存还少一些
点赞 回复 分享
发布于 2021-12-05 15:10

相关推荐

评论
6
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务