
电 话:18942436707
网址:dsesh.com
邮 箱:35384933@qq.com
素数是何编只有两个正因数(1和它本身)的自然(ran)数(shu),例如2、程求3、素数(shu)5、何编7等,程求在Python中,素数我们可以使用一些简单的何编算法来求解素数,以下是程求两种常见的方法:埃拉托斯特(te)尼筛法(Sieve of Eratosthenes)和厄拉多塞筛法(Sieve of Eratosthenes)。(图片(pian)来源网络,素数侵删)
1、何编埃拉托斯特尼筛法

埃拉托斯特尼筛法是(shi)程(cheng)求一种古老的(de)寻找素数的方法,其基(ji)本思想是素数从(cong)2开始,将2的(de)何编倍数剔除,然后找到下一个未被剔除的(de)程求数,将其倍数(shu)剔除,素数如此循环,直到遍历完所有(you)小于等于给定数的数。

以下是使用埃拉托斯特尼筛法求解素数的Python代码:

def sieve_of_eratosthenes(n): is_prime = [True] * (n + 1) is_prime[0] = is_prime[1] = False for i in range(2, int(n**0.5) + 1): if is_prime[i]: for j in range(i*i, n + 1, i): is_prime[j] = False return [i for i in range(n + 1) if is_prime[i]]print(sieve_of_eratosthenes(100))
在这段代码中,我们首先创建了(le)一个布尔数组is_prime,用于标记每个数是否为素数,我们从2开始,将所(suo)有2的倍数标记为非素数,接着,我们找到下一个未被标记为非素数的数,将其倍数标记为非素数,如此(ci)循环,直(zhi)到遍历完所有(you)小于等于给定数的数,我们返回所有被标(biao)记为素数的数。
2、厄拉多塞筛法
以下是使用厄拉多塞筛法求解素数的Python代码:
def sieve_of_eratosthenes(n): primes = [] mark = [False] * (n + 1) for i in range(2, n + 1): if mark[i] == False: primes.append(i) mark[i] = True for j in range(i, n + 1, i): mark[j] = True return primes[::1]print(sieve_of_eratosthenes(100))在这段代码中,我们首先创建(jian)了一个布尔数组mark,用于标记每个数是(shi)否已被标记为合数,我们从2开始,将(jiang)所(suo)有2的倍数标(biao)记为合数,接着,我们找到下一个未被标(biao)记为合数(shu)的数,将其及其倍数(shu)标记为合数(shu),如此循环,直到遍历完所有小于等于给定数的数,我们将所有被标记为素数的数逆序返回。
以上就是使用Python求解素数的(de)两种常见方法,这两种方法(fa)都很(hen)简单易懂,但(dan)在实际使用时(shi),需要根(gen)据具体的需求和场景选择合适的(de)方法。