繁体   English   中英

查找整数 i 是否可以被列表中的所有元素整除

[英]find if integer i is divisible by all elements in a list

正如标题所述,我想找出整数i是否可以被列表中的所有元素整除。

我有这个:

db = [3, 4, 5, 6, 7, 8]
i = 1
if all(i % d != 0 for d in db):
  i += 1

我尝试将if循环与all() ,但即使满足条件,它也只是跳过了该部分(我认为)。 它应该只是添加到整数i直到它可以被 3、4、5、6、7 和 8 整除。

任何提示或我做错了什么?

谢谢,本

你检查了相反的:

如果db每个元素都成立,则不会除以i

您需要切换if逻辑的分支:

if all(i % d == 0 for d in db):
    print(i, "is divisible by all elements of the list")
else:
    i += 1

交替:

if any(i % d != 0 for d in db):
    i += 1
else:
    print(...)

请注意,这似乎是在寻找可被db的每个整数整除的最小整数。 通过更直接地查找列表的 LCM(最小公倍数),您可以更快地完成此操作。 将其放入浏览器的搜索栏中。

if不是循环。 看起来您打算使用while

同样,您的逻辑颠倒了。 使用any而不是all

db = [3, 4, 5, 6, 7, 8]
i = 1
while any(i % d != 0 for d in db):
  i += 1

print(i)  # -> 840

(我遗漏了Prune他们的回答中已经涵盖的一些信息。)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM