""" 题主的问题主要有三个:
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))