我刚刚开始解决 Euler 项目的问题(以及 C 代码的初学者)。
问题 1 指出:如果我们列出所有小于 10 且是 3 或 5 倍数的自然数,则得到 3、5、6 和 9。这些倍数之和为 23。求所有 3 或 5 的倍数之和低于 1000。我很确定我的代码是正确的(或者可能不是)。现在,当我在 codepad.org 或 ideone.com 之类的网站上编译我的代码时,它会显示“超时”。我猜代码运行时间太长?为什么会这样?
我的解决方案:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <assert.h>
int main (int argc, char *argv[]){
int i, j = 0;
for (i = 1; i <= 1000; i++){ //Traverses all the positive numbers under 1000
while ( (i % 5 == 0) || (i % 3 == 0)){
j = j + i; //If it's a multiple of 3 or 5 add it to the sum
}
}
printf("The sum of all multiples of 3 and 5 under 1000 is: %d", j);
return 0;
}