这确实是 Project Euler 中的第一个问题。我创建了这两种算法来解决它,但它们各自产生不同的答案。基本上,工作是编写一个程序,将 3 和 5 的所有小于 1000 的乘积相加。
这是正确的:
divisors<-0
for (i in 1:999){
if ((i %% 3 == 0) || (i %% 5 == 0)){
divisors <- divisors+i
}
}
它产生的答案是 233168
这是错误的:
divisors<-0
for (i in 1:999){
if (i %% 3 == 0){
divisors <- divisors + i
}
if (i %% 5 == 0){
divisors <- divisors + i
}
}
这给出了答案 266333
谁能告诉我为什么这两个给出不同的答案?第一个是正确的,显然是更简单的解决方案。但我想知道为什么第二个不正确。
编辑:在事故中捏造了第二个答案。