我写了一个求素数的程序。我的老师叫我分三步做。首先我要生成所有的赔率数字。然后我需要检查它是否可偏离。为此,他告诉我使用%运算符。这是我的密码:
for num in range(3,10):
if num%2 != 0: #generating odds
for i in range(3,num):
if num%i != 0:
print num
else:
None
else:
None
现在我的问题是,上面的代码是否正确生成素数?你知道吗
上面的代码给了我错误的答案。但是这里的虫子呢?我需要解释一下。你知道吗
上述代码的示例输出为: 三 5 5 5 7 7 7 7 7 9 9 9 9 9 9个
我提供的伪代码用C语言编写,你懂的就试试吧
如果
num
不是素数,则第二个for
循环应该终止。你知道吗我为你找到了the official document:
幸运的是,它提供了一个关于素数的示例。你知道吗
你有一些正确的想法,但也有一些错误。既然你提到一位老师,我就不给你一个代码示例,只是一些提示。你知道吗
对从3到10的所有数字进行迭代(向上计数)。已经少了数字2,它也是素数。你应该先把它打印出来,这样才能完整。你知道吗
然后通过
%2
检查一个数字是否为奇数。这是一个好主意,但是在python中也可以使用range(3,10,2)
而只迭代奇数。最后一个数字是步长,因此它将计算3, 5, 7, 9
。 (这只是一个增强,你的版本没有问题)接下来,循环所有小于当前数字的数字。首先,你可以停在
num/2
,因为除数不能大于这个数。 现在您的bug出现了:每次num
中的一个没有被分割时,您就打印i
。这不是质数。只有当没有一个数i
除以num
时,它才是一个素数。我建议您反转您的逻辑:在else
语句中打印,并使用python语句break
在其中一个i
除法时转义循环。你知道吗另外:
else: None
什么都不做,你可以不做。在Python中,不是每个if
都必须有一个else
。你知道吗相关问题 更多 >
编程相关推荐