所以,第一个编程课程,第一个非分配任务: 在C ++中,对于1到10亿的数字范围,找到所有1到99可被整除的数字(没有余数)的总和。我该如何解决这个问题?我怎么能找到可以被1:99整除的最小数字?
编辑:这不是一件好事,只是要考虑一下。我会在matlab中尝试某种类型的矢量化,但这是我尝试c ++的第一天,所以我真的不知道,我刚学会了如何初始化变量。
答案 0 :(得分:2)
// 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,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 ...整除的所有数字,我会发现1到1000000000之间的所有数字都可以被232792560整除。