素数朴素判定&埃式筛法

本文介绍了质数和素数的基本概念,包括朴素判定法的代码实现以及埃式筛法的逻辑。同时提及了质数分布定理,指出正整数N的质数数量大致不超过N/10。
摘要由CSDN通过智能技术生成

质数:即为素数,在大于1的自然数中,除了1和它本身不再有其它因数的自然数

即对于质数x因子只有1和x,2到x-1中均无x的因子

素数朴素判定法代码:

def is_prime(x):

    if x<=1:

        return False

    for i in range (2,int(x**0.5)+1):

        if x%i==0:

            return False

    return True

埃式筛法:即从小到大枚举所有的数每次找到一个质数则将其倍数全部删除

获取2到n的所有素数组成一个数组

最后生成一个prime数组里面存储从2到n的所有质数

代码实现思路:

维护一个vis数组表示该数字是否被删除

维护一个prime数组存储所有的质数

n=int(input())

##维护一个vis数组表示该数字是否被删除

##被删除标记为1证明该数字不是素数

vis=[0]*(n+10)

def get_prime(n):    

    prime=[]

    vis[0]=vis[1]=1

    for i in range (2,n+1):##因为从小到大边枚举边删除所以不需要先找到素数再枚举

        if vis[i]==0:

            ##如果该数字未被删除则它是一个素数

            prime.append(i)##插入素数

            for j in range (i+i,n+1,i):

                ##标记所有倍数

                vis[j]=1

    return prime

ls=get_prime(n)

     

质数分布定理:正整数N的质数的个数基本上不超过N//10个

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值