2013-08-03 2 views
-3

Я только что решил проблему с проектом Euler (и начинающим с C-кодом).Время Превышено для проекта Euler test

Задача 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; 
} 

ответ

4

У вас есть while заявление в там, которое должно быть if заявление. while принимает вас в бесконечный цикл, так как вы никогда не меняете значение i внутри цикла, когда выполняется условие, для которого вы тестируете.

+0

Oh! Спасибо! Ха-ха, моя ошибка. Er, мой код все еще, по-видимому, ошибочен. (С точки зрения проблемы) – Bobby

+0

Решил. Еще раз спасибо! – Bobby