好吧,您根本不需要循环。
您知道x和y之间可被2整除的数字的数目为(yx)/ 2(加减一)。
类似地,x和y之间可被3整除的数字数为(yx)/ 3(加减一)。
x和y之间可被5整除的数字数为(yx)/ 5(加减一)。
您只需要删除多次计数的数字即可。
如果您考虑A,B和C组,即分别被2、3和5整除的数字组(在所需范围内),则您的目标是:
| A工会B工会C | = | A | + | B | + | C | -|与B的交点| -|与C的交点| -| B与C |的交点 + |
A与B的交集与C |的交集
因此,您必须减去可被2 * 3整除的数字,可被2 * 5整除的数字和可被3 * 5整除的数字。最后,您必须添加可被2 * 3 * 5整除的数字。
范例:
在1000到2000之间,大约有(2000-1000)/ 2 =
500个可被2整除的数字:1000,1002,1004,…,2000。实际上,计数是1,因为它是501,而不是500,但是您可以通过添加一些检查范围边缘的逻辑来对此进行调整。
同样,大约有(2000-1000)/ 3 = 333个数字可被3整除:1002、1005、1008,…,1998。
大约(2000-1000)/ 5 = 200个可以被5整除的数字:1000,1005,1010,…,2000。在这里,计数再次减一。



