Mein Einstieg in C++

, 1 min read

Für meinen Einstieg in C++ habe ich mir das Problem #2 von [projecteuler.net](http://projecteuler.net) herausgesucht. Die Problembeschreibung befindet sich [hier](http://projecteuler.net/index.php?section=problems&id=2).

Für die Lösung muss man zunächst die Fibonacci Zahlen bestimmen. Dafür verwende ich die Formel von Moivre-Binet:

In C++ sieht das dann so aus:

double getNthFibonacci(double n)
{
	double out;
	out = 1/sqrt(5.0) * (pow(((1+sqrt(5.0))/2), n)
		- pow(((1-sqrt(5.0))/2), n));
	return out;
}

Der Rest ist relativ simpel. Es wird geprüft, ob die Zahl kleiner als 4.000.000 ist und ob sie eine gerade Zahl ist. Wenn das der Fall ist, wird der Variable sum die Zahl hinzuaddiert.

int _tmain(int argc, _TCHAR* argv[])
{
	double Fib = 0;
	double sum = 0;
	int i = 1;

	while(true)
	{
		Fib = getNthFibonacci(i);
		if(Fib <= 4000000)
		{
			if((int)Fib % 2 == 0)
			{
				sum += Fib;
			}
			i++;
		}
		else
			break;
	}

	cout << "Summe: " << sum;
	cin.get();

	return 0;
}

Das ist weder die schnellste, noch die eleganteste Lösung aber ich konnte mir zunächst nicht vorstellen, dass die Formel wirklich immer ganze Zahlen ausspuckt.

Quellen: http://de.wikipedia.org/wiki/Fibonacci-Folge http://msdn.microsoft.com/de-de/library/bb978923.aspx


avatar

Philipp Hansch

Full Stack Developer

Philipp is a full stack developer currently heavily involved with Rust. Most notably he's a member of the Clippy team where he helps with bugfixing and documentation. You can follow him on Twitter and find him on GitHub as well as Patreon.