2016-10-17 4 views
0

Проблема говорит, что только один триплет существует, для которых: а + Ь + с = 1000 и^2 + Ь^2 = с^2ProjectEuler 9: Почему это не работает (Java)?

Я пытаюсь найти этот триплет путем простой грубой силы, но его возвращаются каждый раз, когда a = 1000, b = 1000 и c = 1000, и я не могу понять, почему?

public class Euler9 
{ 

    static long Answer() 
    { 
     long a=1,b=1,c=1; 

     outer: 
     for(; a<1000; ++a) 
     { 
      for(; b<1000; ++b) 
      { 
       for(; c<1000 ; ++c) 
       { 
        if((a+b+c == 1000) && (a*a+b*b == c*c)) 
        break outer; 
       } 
      } 
     } 

     System.out.println(a+" + "+b+" + "+c+" = "+(a+b+c)); 
     return a*b*c; 
    } 

} 
+1

После того, как вы увеличили 'c' до 1000, он никогда не будет сброшен до 1, то же самое с' b'. Поэтому вы не изучаете все возможные комбинации. – Henry

+0

Спасибо @Henry –

ответ

0

Для циклических циклов для инициализации ваших индексных переменных необходимо использовать следующие параметры: ваш разрыв должен перейти к коду ПОСЛЕ Вложенных циклов.