确定属于区间 [2 10^10; 4 10^10] 可被 7 和 100,000 整除但不能被 13、29、43 和 101 整除的自然数,以及这些数中的最小数。在你的答案中,写下两个不带空格或其他附加字符的整数:首先是数字,然后是最小的数字。
m = 4 * 10**10 +1
k=0
for i in range(2 * 10**10,4 * 10**10 +1):
if i %7==0 and i %100000==0 and i %13!=0 and i %29!=0 and i %43!=0 and i %101!=0:
k +=1
if i<m:
m=i
print(k,m)
我在 IDLE 中运行它,只是不等待响应,我怎样才能加快它的速度?
如果你稍微想一想,那
2 * 10**10
当然是除以一个100000
整数(最后有 10 个零)。下一个能被整数整除的数字是100000
多少?当然2 * 10**10 + 100000
。下一个呢?因此,您只需要迭代不是连续的所有数字,而是使用 step100000
。对于这样range
的搜索,有一个特殊的第三个参数。答案是立竿见影的。