我有一个问题,我试图解决,但我被困在一个关键部分。
将以下英文说明转换为Python代码。
将 n 初始化为100.将数字初始化为 2 到 n 的数字列表,但不包括 n 。将结果作为空列表开始,只要数字包含任何数字,就重复以下操作。
将数字中的第一个数字添加到结果的末尾。
删除数字中可被整除的所有数字(除以时没有余数)您刚刚添加到结果的数字。
结果有多长?
当 n 为100时,结果的长度为25。
到目前为止,我已理解设置n = 100
和range(2, 100)
,results = []
,结果将是results.append(numbers[])
中的附加情况,但我有一个心理障碍,找出“删除数字中可以被添加到结果中的数字整除的数字”的关键字。
======几分钟后=======
正如Michael0x2a所说 - 当我必须使用Eratosthenes的Sieve实现一个从2到n找到所有素数的算法时,这是一个问题。
我想我可以继续处理这个问题。
非常感谢您的回答。
答案 0 :(得分:3)
n = 100
numbers = range(2,100)
results = []
while len(numbers) > 0:
results.append(numbers[0])
numbers = [number for number in numbers if number % results[-1] != 0]
print len(results)
答案 1 :(得分:2)
以下内容:
将数字中的第一个数字添加到结果的末尾。
......与以下内容不同:
results.append(numbers[])
要访问列表中的第一个号码,您可以使用第一个索引。
因此:
numbers[0] ## would be the first "number" in numbers
此外,要做到以下几点:
但是我有一个心理障碍,想出“删除所有人”的关键 数字中的数字,可以被添加到的数字整除 结果。”
...你需要一些方法来测试一个数字可被整除的东西,这意味着你需要使用模数:
some_number % some_other_number
如果没有余数,模数将导致零。