这两个程序有什么区别

what is the difference between these two programmes

b=input("Enter number : ")
for n in range(2, b+1):
     for x in range(2, n):
         if n % x == 0:
              break
     else:
          print n

这个程序打印最多 n 个质数 输出是

输入号码:10
2
3
5
7

b=input("Enter number : ")
for n in range(2, b+1):
     for x in range(2, n):
         if n % x == 0:
              break
         else:
              print n

输出是

输入号码:10
3
5
5
5
7
7
7
7
7
9

它们是相同的

XXXX:tmp anthony$ cat > one.txt
b=input("Enter number : ")
for n in range(2, b+1):
     for x in range(2, n):
         if n % x == 0:
              break
         else:
              print n
XXXX:tmp anthony$ cat > two.txt
b=input("Enter number : ")
for n in range(2, b+1):
     for x in range(2, n):
         if n % x == 0:
              break
         else:
              print n
XXXX:tmp anthony$ diff one.txt two.txt
XXXX:tmp anthony$
b=input("Enter number : ")
for n in range(2, b+1):
     for x in range(2, n):
         if n % x == 0:
              break
     else:
          print n

如果 n % x 没有余数,只有第一个正确的值,则打印出 n


b=input("Enter number : ")
for n in range(2, b+1):
     for x in range(2, n):
         if n % x == 0:
              break
         else:
              print n

打印出每个具有非零余数的 n 直到出现第一个零余数。


更多关于 for else 工作原理的信息:

for else 将 运行 for 循环,然后 运行 在 for 循环完成后立即执行 else。在您的情况下,for 循环在某个点结束,然后在结束处打印结果值。

for x in range(10):
    print x
else:
    print "hello world"

以此为例。它打印出来:

0
1
2
3
4
5
6
7
8
9
hello world 

为什么这有用?那么你的程序给出了一个很好的例子来说明为什么会这样。我们想在某个条件通过时退出 for 循环,然后在找到该条件后执行某些操作(如果我们找到了通过条件,否则我们只是 运行 无论如何)。因此,如果在 for 循环中满足条件 运行 this,或者 运行 this 总是在 for 循环的末尾。


回到你的问题,基本上第一个求给定数的因数,第二个求给定数的非因数