Project Eurler - problem nr 2 - Ciag Fibbo

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.

3

Project Euler ma Honour code, ma sie rozwiazywac samemu.

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ę.

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ę.

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.

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