python 找最大质数问题

为什么报错。两图的区别是一个是print(s[-1])一个是return
2025-02-25 19:55:57
推荐回答(1个)
回答1:

""" 题主的问题主要有三个:
1. max_prime中的i错写成了x,这是导致错误的原因
2. s=[]应放在函数max_prime中,这样才符合程序设计原则
3. 如果要求的是包含x在内的最大质数,max_prime函数中range应
   写成range(2,x+1),此时i的取值范围才是2到x
此外,寻找最大质数时max_prime中遍历时应该从后往前遍历,此时遇到
   的第一个质数就是所求最大质数,而不必从前遍历做无用功。
修改代码如下:
"""
def prime(x):
    for i in range(2,x//2+1):
        if x%i==0:
            return False
    return True

def max_prime(x):
    for i in range(x,1,-1): # x+1以包含x本身
        if prime(i):
            return i
    
print(max_prime(1000))