首页 > 解决方案 > 尝试筛选 Eratosthenes python 函数

问题描述

我对 python/编程很陌生,我一直在尝试对 Eratosthenes 函数程序进行筛选,但是似乎我的代码输出了不希望的结果。此外,对此我也不知道程序如何输出该特定解决方案。可能有人请帮助我并解释当前的输出以及我应该如何着手和修复这个程序,以便它可以打印素数。

亲切的问候!

#Sieve Code 

import math
numbers = []

def sieve_method(n):
    global numbers
    for n in range(2, n + 1):
        for J in range (2, int(math.sqrt(n))+1):
            if J in numbers:
                multiple = n*J 
                while multiple <= n:
                    if multiple in numbers:
                        numbers.remove(n)
                J += multiple
            numbers.append(n)
        print(numbers) 

sieve_method(10)
#CURRENT OUTPUT 
#[]
#[]
#[4]
#[4, 5]
#[4, 5, 6]
#[4, 5, 6, 7]
#[4, 5, 6, 7, 8]
#[4, 5, 6, 7, 8, 9, 9]
#[4, 5, 6, 7, 8, 9, 9, 10, 10]

标签: pythonsieve-of-eratosthenes

解决方案


好吧,因为这不是 Erathnostenes 筛的真正实现,而只是一个生成素数的函数(这不完全是一个筛分过程),这里是一个真正的筛算法代码:

def sieve(n):
   sieved = list(range(2, n+1))
   for n in sieved:
       for J in range(2, n+1):
           if n%J==0:
               sieved.remove(n)
               print(sieved)
               break
       print(sieved)

推荐阅读