使用math.sqrt查找范围内的素数

2024-10-02 04:19:48 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我必须找到从1到500的素数 我查看了各种博客和堆栈溢出问题 但每次我更改代码时,它都会返回 "1 2 3 4 5 6 7 8 9" 我找不到问题。请帮帮我

primary = True
import math
for n in range(2,501):
    sqrn=math.sqrt(n)
    for div in range (2, int(sqrn)):
        if n%div == 0:
            primary = False
            break
    if primary:
        print(n, end=" ")
print()

Tags: 代码inimportdivtrueforif堆栈
1条回答
网友
1楼 · 发布于 2024-10-02 04:19:48

您需要将1添加到sqrt(n),因为range的上限是独占的

此外,您需要在每个内部循环之前将primary重置为True,否则您将只能找到一个素数

import math

for n in range(2, 501):
    primary = True
    sqrn = math.sqrt(n)
    for div in range (2, int(sqrn) + 1):
        if n % div == 0:
            primary = False
            break
    if primary:
        print(n, end=" ")

print()

相关问题 更多 >

    热门问题