LCM 的总和范围从 1 到 10^9

Sum of LCM range from 1 to 10^9

所以,第一门编程课程,第一个非评分作业: 在 C++ 中,对于从 1 到 10 亿的数字范围,求可被 1 到 99 整除(无余数)的数字之和。我该怎么做?我如何找到可被 1:99 整除的最小数字?

编辑:这不是要上交的硬件,只是需要考虑的事情。我会在 matlab 中尝试某种类型的矢量化,但这是我第一天尝试 C++,所以我真的不知道,我刚刚学会了如何初始化一个变量。

// In pseudocode a very basic algorithm:
main
  for i: 1 to 1000000000
    if (TestValue(i))
      Output(i)

TestValue(i)
  for j: 1 to 99
    if j does not divide i evenly
      return false
  return true

当然,这不会很高效。您可能会注意到,如果一个数字可以被 1 到 99 之间的所有数字整除,那么它必须可以被 1..99 中的素因数集整除。例如,在 1..19 中,质因数是:2、2、2、2、3、3、5、7、11、13、17、19。如果某物可以被所有数字 1..19 整除,则它必须能被 2*2*2*2*3*3*5*7*11*13*17*19 = 232792560 整除。要找到 1 到 1000000000 之间的所有数字都可以被 1..19 整除,我会发现 1 到 1000000000 之间的所有数字都可以被 232792560 整除。