""" 题主的问题主要有三个:
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))
import math
def IsPrime(Num):
if Num ==1:
return False
for n in range(2,int(mathsqrt(Num))+1):
if Num%n==0:
return False
else:
return True
oList = []
for i in range(1,101):
if IsPrime(i)==True:
oListappend(i)
else:
print oList
首先定义一个函数判断是否为素数,如果这个数能被2~它的平方根中的任一数整除的话它就不是素数,否则就是素数。用flag为0或1标记,利用filter()筛掉flag为0的非素数。
#!/usr/bin/env python#coding:utf-8
import math
def filter_prime(n): #定义filter_prime函数
flag = 1 #设置flag,初始化为1
for i in range(2, int(mathsqrt(n)+1)): #取2至平方根的数
if n%i == 0: #判断是否是素数
flag = 0 #如果不是,flag设为0
if flag == 1: #退出循环后判断flag,若为1(素数),则返回
return n
print filter(filter_prime, range(1,101)) #filter 1-100里的非素数
#求一定范围内的素数;import math;def prime_number(a:int,b:int)->set:#n的取值范国上限b,下限a; result=[]#此行代码行首缩进4格; for i in range(a,b):#此行代码行首缩进4格; for j in range(2,int(mathsqrt(i))+1):#此行代码行首缩进8格; if i%j!=0:#此行代码行首缩进12格; resultappend(i)#此行代码行首缩进16格; else:#此行代码行首缩进12格; break#此行代码行首缩进16格; result=set(result)#此行代码行首缩进4格; return result#此行代码行首缩进4格; if __name__ == "__main__":print(prime_number(100,200))#此行代码行首缩进4格,此处可改变n的范围;
python 素数
result
主要是在最后一个判断:
if b2%k!=0:这个判断用9举例,当循环判断遇到2时,判断就成功了。
这是在你的代码基础上修改的。
from math importn = int(input())
ssd = []
if n == 1 or n == 2 or n == 3 or n == 4:
print('empty')
else:
for i in range(2, n + 1):
f = True
for j in range(2, int(sqrt(i)) + 1):
if i % j == 0:
f = False
break
if (f):
b1 = i
b2 = b1 + 2
for k in range(2, int(sqrt(b2)) + 1):
if b2 % k == 0:
f = False
break
if (f):
ssdappend(b1)
ssdappend(b2)
print(ssd)
ssdclear()
以上就是关于python 找最大质数问题全部的内容,包括:python 找最大质数问题、python编写质数判断问题、python 中用filter求素数的时候,这里的筛选函数是什么意思等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)