输出n以内的所有素数(质数)

本文深入探讨了素数(质数)的概念,并提供了一种有效的算法来生成指定范围内的所有素数。通过定义和理解素数的性质,文章介绍了如何使用Python编程语言实现一个能够过滤并列出所有小于特定数值的素数的程序。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

素数(质数):除能被自己和1整除,不能被其他数整除的数叫素数,1和0既非素数也非合数。

***素数一定是不能整除2和3,但不能整除2和3的不一定是素数如35和49

def _odd_iter(n):
    listE=[i for i in range(2,n+1)]
    k=0
    while k<len(listE):
        r=listE[k]
        for m in listE:
            if (m%r==0) and (m!=r):
                listE.remove(m)
        k= k+1
        # yield listE
        #print('长度:',len(listE))
    return listE

print(n,'以内的所有素数:',_odd_iter(100))

思路分析:

1、先生成3开头的奇数,因为偶数均不是素数

2、定义一个函数不能整除

3、通过filter过滤函数完成输出n以内的所有素数

def generateOdd(m):
    k=1
    while k<=m:
        k=k+2
        yield k

def Divisible(t):
    return lambda a:a%t>0

def prime(n):
    yield 2
    it=generateOdd(n)
    while True:
        try:
            k = next(it)
            yield k
            it = filter(Divisible(k),it)
        except StopIteration as e:
            print('Generator return value:', e.value)
            break
tmp=80
print(tmp,'以内的所有素数:',list(prime(tmp)))

80 以内的所有素数: [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值