python 找最大质数问题

python 找最大质数问题,第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))

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 import 

n = 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求素数的时候,这里的筛选函数是什么意思等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10108135.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存