[英]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.