我的素数程序在某个范围内有什么问题?

  • 本文关键字:范围内 问题 程序 python
  • 更新时间 :
  • 英文 :


要在范围程序中打印质数:

lower = int(input("Enter lower range: "))   
upper = int(input("Enter upper range: "))
for num in range(lower,upper + 1):
   # prime numbers are greater than 1
   if num > 1:
       for i in range(2,num):
           if (num % i) == 0:
               break
       else:
           print(num)

上述内容的输出为:

Enter lower range: 3
Enter upper range: 10
3
5
7

但是,当我尝试使用以下代码时,输出是不同的。

min=int(input("enter the min num"))
max=int(input("Enter the max num"))
for i in range(min,max+1):
    if i > 1:
        for j in range(2,i):
            if (i%j) == 0:
                break
            else:
                print(i)

输出:

enter the min num: 3
Enter the max num: 10
3
5
5
5
7
7
7
7
7
9

您有一个缩进差异:

for j in range(2,i):
        if (i%j) == 0:
            break
## This piece
        else:
            print(i)
## This piece

在您的第一个示例中:

  • 对于每个数字,进行模计算,如果导致 0 则中断
  • 如果所有计算都没有导致 0,则找到一个素数(并因此打印它)

en 你的第二个例子:

  • 对于每个数字,进行模计算,如果导致 0 则中断
  • 如果它不会导致 0:打印数字。这种情况比示例 1 中的else发生的频率更高。

2 维循环是这段代码的问题,当 i = 5 时,你去 j (2,5) 所以你遍了循环三次,你应该添加一个命令以防止重复

每次

检查成功后重新打印值。您应该在所有检查后放入一个标志以将其打印出来。如下所示

for i in range(min,max+1):
    if i > 1:
        prime = True
        for j in range(2,i):
            if (i%j) == 0:
                prime = False
                break
        if prime:
            print(i)

相关内容

最新更新