Project Eurler - problem nr 2 - Ciag Fibbo

Odpowiedz Nowy wątek
2018-05-27 14:04
0

Próbuję rozwiązać problem nr 2 z listy Eulera - suma parzystych liczb poniżej 4 mln, ale niestety ciągle otrzymuję zły wynik. Żeby sobie ułatwić rozwiązanie, to znalazłem gotowy program który wygląda tak:

    int sum = 0;
    int x = 1;  // Represents the current Fibonacci number being processed
    int y = 2;  // Represents the next Fibonacci number in the sequence
    while (x <= 10) {
        if (x % 2 == 0)
            sum += x;
        int z = x + y;
        x = y;
        y = z;
    }
System.out.println(sum);

Dla uproszczenia policzyłem sumę dla 10 i już widzę że mój program inaczej działa - ten daję sumę 10 a mój 44.

Poniżej mój program

public static void main(String args[]) {
    int max=10;
    long sum=0;
    int fibb[]= new int[max];
    fibb[0]=0;
    fibb[1]=1;
    int i=0;
     for(i=2;i<max;i++) {
         fibb[i]=fibb[i-2]+fibb[i-1];
     }

     for(i=0;i<max;i++) {
         if(fibb[i]%2==0) sum=sum+fibb[i];
     System.out.println("Element " + i + "  = "+ fibb[i]);
     }
     System.out.println("Suma= "+sum);

I wynik z 10-cioma pierwszymi elementami

Element 0 = 0
Element 1 = 1
Element 2 = 1
Element 3 = 2
Element 4 = 3
Element 5 = 5
Element 6 = 8
Element 7 = 13
Element 8 = 21
Element 9 = 34
Suma= 44

...czemu to jest źle - przecież 2+8+34 jest równe 44, wiec powinno być OK.

Pozostało 580 znaków

2018-05-27 14:24
3

Project Euler ma Honour code, ma sie rozwiazywac samemu.


Pozostało 580 znaków

2018-05-27 19:25
1

Myślę, że podpowiedź pod tytułem "gdzie robię błąd myślowy" nie będzie pogwałceniem kodeksu honorowego. Chyba problem wynika z x. Uznałeś, że x to numer wyrazu w ciągu, ale w kodzie, który skopiowałeś - x jest wartością ciągu. W tym kodzie nie ma literki i. Jak popatrzę na Twoją tabelkę i zsumuję wartości fibb <= 10, to wychodzi mi 2+8=10. Czyli zgadza się.


Przeważnie ignoruję niezarejestrowanych użytkowników.

Pozostało 580 znaków

2018-05-27 19:48
0

Dzięki jarekczek. A co do "honor code", to nie zależy mi na pozycji w rankingach, po prostu chce się coś nauczyć, więc nie będę tego wykorzystywać , żeby się chwalić zdobyciem x punktów :) A tak w ogóle to można wejść na youtube i tam sporo problemów jest rozwiązanych, ale wolałbym sam myśleć plus ewentualnie prosić o kogoś jak już wejdę w ślepą uliczkę.

Pewnie, czasem samemu po prostu nie da się rozkminić. Zakaz pytania byłby bez sensu :) - jarekczek 2018-05-27 19:51
Na marginesie: jak post pomaga, to zaznaczasz go łapką. Ja chcę się chwalić zdobyciem x punktów na 4prog :) - jarekczek 2018-05-27 19:52

Pozostało 580 znaków

2018-05-27 22:48
0

Program liczy sumę parzystych liczb z ciągu Fibonacciego a nie sumę wszystkich liczba parzystych.
Ciąg Fibonacciego to 0,1,1,2,3,5,8,13 ..... czyli suma liczb parzystych < 10 to 2+8=10.
Kolejna liczba ciągu jest sumą dwóch poprzednich.

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0