在python中使用遍历循环求素数_Python while循环查找素数

作为使用Python的第一个练习,我试图使用循环来编写一个程序来查找素数。所有的东西都和for循环一起工作,所以我尝试使用while循环。这是可行的,但程序返回一些错误的数字。import math

# looking for all primes below this number

max_num = int(input("max number?: "))

primes = [2] # start with 2

test_num = 3 # which means testing starts with 3

while test_num < max_num:

i = 0

# It's only necessary to check with the primes smaller than the square

# root of the test_num

while primes[i] < math.sqrt(test_num):

# using modulo to figure out if test_num is prime or not

if (test_num % primes[i]) == 0:

test_num += 1

break

else:

i += 1

else:

primes.append(test_num)

test_num += 1

print(primes)

奇怪的是,对于max_num=100,它返回:[2, 3, 5, 7, 9, 11, 13, 17, 19, 23, 25, 29, 31, 37, 41, 43, 47, 49, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97]

这是正确的,除了9,25和49,我不知道为什么。


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部