如何扩展用作循环范围的数组

How do I extend an array being used as range for a loop

提问人:Yodamustibe 提问时间:10/23/2023 最后编辑:mkrieger1Yodamustibe 更新时间:10/23/2023 访问量:46

问:

我正在构建一个程序来查找质数,我通过循环遍历 100 以下的数字来做到这一点,我使用两个 for 循环来遍历数字并查找它们是否为质数。我的问题是第二个循环范围等于发现的素数数组,但我不知道如何添加到该数组中,因为当我将新数字附加到数组时,Python 会创建一个克隆变量,这意味着它只会循环第二个循环一次。

def Primeadder():
    primes = [1]
    for i in range(100):
        for j in range(len(primes)):

            if j != 0:
               continue
            
            print(f"i = {i} and j = {j}")
            print(len(primes))

            if j != 0 and i%primes[j] == 0 and i not in primes:
                primes.append(i)
    print(primes)

Primeadder()

我尝试使用 numpy 数组,但不知道如何在 visual studio 上安装库。关于如何解决这个问题,我没有其他想法。

python 动态数组

评论


答:

0赞 XM01 - stands with Palestine 10/23/2023 #1

代码中存在逻辑错误

这是正确的代码:

def Primeadder():
    primes = []
    for i in range(2, 100): 
        is_prime = True  

        for prime in primes:
            if i % prime == 0:
                is_prime = False
                break  

        if is_prime:
            primes.append(i)

    print(primes)

此代码从 because 不是质数开始,假定每个数都是质数,检查已知素数的可整除性,并将不可整除的数添加到质数列表中。这样,它就可以有效地识别 下的质数。21100

素数是一个自然数,它正好有两个不同的自然数除数:1 和它自己。