所以,第一个编程课程,第一个不评分作业:在 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 整除。