打印for循环中的所有数字



我正在尝试筛选出正则数字,并使用for循环打印素数。

for i in range(2,Range):
if Range%i==0:
pass
else:
pass
print(j)

但我得到了每个数字。

据我所知,问题在于您用于检查数字是否为素数的方法。声明

Range % i == 0

只检查名为"Range"的变量(我认为它是你想要检查的最高数字(是否可以被当前数字"I"整除(所以在我看来,你的解决方案会列出"Range"所有可能的因子,而不是所有素数(。

为了正确地检查一个数字是否是素数,你可以从2迭代到这个数字的平方根,在每一步都检查可分割性:

from math import sqrt

# Helper function, taken from https://www.geeksforgeeks.org/prime-numbers/
# A number is prime if it is not divisible by any numbers other than itself and 1.
def isPrime(n):

# Corner case
if (n <= 1):
return False

# Check from 2 to sqrt(n)
for i in range(2, int(sqrt(n))+1):
if (n % i == 0):
return False

return True

# Solution
def print_all_primes_up_to_number(num):
# This could be further optimized to skip checking even numbers greater than 2.
for i in range(num):
if isPrime(i):
print(i)
print_all_primes_up_to_number(99)

顺便说一句,计算大素数的计算费用对密码学来说很重要(https://www.abc.net.au/news/science/2018-01-20/how-prime-numbers-rsa-encryption-works/9338876)。

最新更新