我正在Python中运行以下代码:
#Finding prime numbers
for n in range(2, 10):
for x in range(2, n):
if n % x == 0:
print(n, 'equals', x, '*', n//x)
break
# loop fell through without finding a factor
else:
print(n, 'is a prime number')
其输出如下:
2 is a prime number
3 is a prime number
4 equals 2 * 2
5 is a prime number
6 equals 2 * 3
7 is a prime number
8 equals 2 * 4
9 equals 3 * 3
假设正在进行以下迭代:
n=3, x=n
n%x的值是什么?
如果它是== 0
,为什么我们不知道
print(n, 'equals', x, '*', n//x)
答案 0 :(得分:1)
如果您的意思是n%n
的值是什么,则它为零,因为n总是可被n整除,而%是除数余数运算符。这就是为什么代码中的循环将x从2变为n-1(这就是range(2, n)
所做的-它的最后一个参数不包含在内)。
答案 1 :(得分:0)
%
运算符得到余数。因此,如果您执行5%2,则结果等于将5除以2得到2,剩下的1等于5%2 => 1。
答案 2 :(得分:0)
n % n
的值为0。在给定的示例n=3
和x=n
中,语句
print(n, 'equals', x, '*', n//x)
将打印
3 equals 3*1
与您的代码有关的只是它从未将n
与自身进行比较。看看你的循环:
for n in range(2, 10):
for x in range(2, n):
...
第一个循环从2到10,排他性,表示2到9。第二个循环从2到n
,从排他性。如果为n == 2
,则表示第二个循环根本不运行。如果为n == 3
,则第二个循环仅在x = 2
上运行一次。还有等等。