素数python嵌套循环(Prime number python nested loops)
我是python的新手,我对这段代码有一些问题,应该使用嵌套循环打印所有小于50的素数。
这是代码:
i = 2 while(i < 50): j = 2 while(j <= (i/j)): if not(i%j): break j = j + 1 if (j > i/j): print(i, " is prime") i = i + 1
它的输出是:
2 is prime 3 is prime 5 is prime 7 is prime 11 is prime 13 is prime 17 is prime 19 is prime 23 is prime 29 is prime 31 is prime 37 is prime 41 is prime 43 is prime 47 is prime
所以在3之后,j应该是2而我应该是4.那么它不是素数,所以它会回到while循环。
这个过程重新开始。 j和i应该加1。 所以j应该是3,我应该是5,5是素数,然后它再次增加到6。
所以j应该仍然是3而我应该是6.但是(3 <=(6/3))< - 这不是真的,所以它转到if语句和3是j大于2是i / j,这意味着6应该是素数。
但事实并非如此。 你可以通过常识来说明这一点。 而且我想知道我在这里做错了什么。 我在这里错过了任何增量吗? 谢谢。
I am new to python and I am having some problems with this code that should print all the prime numbers that are smaller than 50 using nested loops.
Here is the code:
i = 2 while(i < 50): j = 2 while(j <= (i/j)): if not(i%j): break j = j + 1 if (j > i/j): print(i, " is prime") i = i + 1
Its output is:
2 is prime 3 is prime 5 is prime 7 is prime 11 is prime 13 is prime 17 is prime 19 is prime 23 is prime 29 is prime 31 is prime 37 is prime 41 is prime 43 is prime 47 is prime
So after 3, j should be 2 and i should be 4. Then it's not a prime number, so it goes back to the while loop.
And the process starts over. j and i should be incremented by one. So j should be 3 and i should be 5, 5 is prime, then it increments again to 6.
So j should still be 3 and i should be 6. But (3 <= (6/3)) <-- this is not true, so it goes to if statement and 3 which is j is bigger than 2 which is i/j, which means 6 should be prime.
But it's not. You can tell that by common sense. And I want to know what part I did wrong here. Did I miss any increments here? Thank you.
原文:https://stackoverflow.com/questions/22007492