素数,python暴力实现

好久没写博客了,水一篇

i = 2
while(i < 100):
    j = 2
    while(j <= (i/j)):
        if not (i%j):break
        j = j + 1
    if(j > i/j) : print(i," 是素数")
    i = i + 1

print("Good bye")

 

有很多不同的方法可以用 Python 生成素数,以下是其中几个常见的方法: 1. 暴力枚举法: 这种方法的思路是从 2 开始遍历所有的自然数,判断其是否为素数。具体实现可以使用两个嵌套的循环,外层循环枚举自然数,内层循环用于判断是否为素数。代码示例: ```python def is_prime(n): if n <= 1: return False for i in range(2, n): if n % i == 0: return False return True def generate_primes(n): primes = [] for i in range(2, n): if is_prime(i): primes.append(i) return primes ``` 2. 厄拉多塞筛法: 这种方法的基本思路是从小到大枚举自然数,如果该数为素数,则将其所有的倍数都标记为合数。具体实现可以使用一个布尔数组来记录每个数是否为素数,初始时所有数都为素数,然后从 2 开始枚举,如果当前数为素数,则将其所有的倍数都标记为合数。代码示例: ```python def generate_primes(n): is_prime = [True] * n primes = [] for i in range(2, n): if is_prime[i]: primes.append(i) for j in range(i * i, n, i): is_prime[j] = False return primes ``` 3. 线性筛法: 这种方法是一种优化过的厄拉多塞筛法,其基本思路是从小到大枚举自然数,如果该数为素数,则将其直接加入素数列表,并且将其所有的倍数都标记为合数。如果当前数是某个素数的倍数,则直接跳过。具体实现可以使用一个数组记录每个数的最小素因子,初始时所有数的最小素因子都为自身,然后从 2 开始枚举,如果当前数的最小素因子是自身,则将其加入素数列表,并将其所有的倍数的最小素因子都更新为该素数。代码示例: ```python def generate_primes(n): is_prime = [True] * n primes = [] min_factors = [0] * n for i in range(2, n): if is_prime[i]: primes.append(i) min_factors[i] = i for j in range(len(primes)): if primes[j] > min_factors[i] or primes[j] * i >= n: break is_prime[primes[j] * i] = False min_factors[primes[j] * i] = primes[j] return primes ``` 以上是三个常见的生成素数的方法,实际上还有很多其他的方法可以用于生成素数
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值