繁体   English   中英

查找 Python 列表中的所有质数

[英]Finding all the prime numbers in a list in Python

我想遍历一个列表并找到所有素数

arr = [1,2,3]

for i in range(len(arr)):
 if arr[i] > 1:
        for j in range(2, int(arr[i]/2)+1):
            if (arr[i] % j) == 0:
                print(arr[i], "is not prime")
            else:
                print(arr[i], "is prime")
  else:
        print(arr[i], "is not prime")

这只会打印出“1 不是质数”。 我猜它与 for 循环的范围(len())有关。

你的代码问题如下

int(arr[i]/2)+1) 小于 2,因此 range(2, int(arr[i]/2)+1)) 没有元素。 对于 2 和 3,for 循环不执行。这两种情况需要分开处理。

第二个问题是,对于更大的数字,您要在内循环中的每次迭代中决定数字是否为素数。

这是对应该起作用的代码的轻微修改:

arr = range(20)

for i in range(len(arr)):
    if arr[i] > 3:
        is_prime = True
        for j in range(2, int(arr[i]/2)+1):
            if (arr[i] % j) == 0:
                is_prime = False
                break
            else:
                continue
        print(arr[i], "is prime" if is_prime else "is not prime")
    elif arr[i] in [2,3]:
        print(arr[i], "is prime")
    else:
        print(arr[i], "is not prime")
arr = list(range(20))

def is_prime(n):
    if n < 2:
        return False
    for i in range(2, int(n**0.5)+1):
        if n % i == 0:
            return False
    return True

def find_primes(array):
    return list(filter(is_prime, array))

print(find_primes(arr))

回报:[2, 3, 5, 7, 11, 13, 17, 19]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM