Project Euler Problem 2 - Çift Fibonacci Sayıları

Problem 2 - Fibonacci serisinde yer alan 4.000.000 değerinden küçük tüm çift sayıların toplamını yazdırın.

Problemin çözümünü C++ programlama dili ile gerçekleştirmeye çalıştım. Tabi bunun için iyi olmayan bir BigInteger kütüphanesi yazdım. Sorunu çok daha hızlı çözebilirdim elbette.

Fibonacci sayılarını programda göstermek için algoritmasını oluşturmalıyım. Fibonacci serisinin çalışma mantığı nedir? Fibonacci serisinde yer alan sayılar, kendinden önceki iki sayının toplamına eşittir.

Fibonacci serisini 1, 2 olmak üzere başlatalım:

1, 2, 3, 5, 8, 13, 21... (şeklinde devam eder..)

Çalışma mantığını öğrendiğimize göre, algoritmasını oluşturabiliriz.

  • Programı başlat.
  • 3 kapasiteli tam sayı tipinde bellek ayırtılır.
  • İlk iki dizi değişkenine 1 ve 2 değerlerini ata.
  • Toplam değişkeni tanımlanır ve başlangıç değeri olarak 2 ata.
  • Döngüye girilir.
  • Döngü içinde son 2.indis dizi değişkenine ilk iki dizi değişkeni topla ve ata.
  • İndis değerlerinden biri 4.000.000 değerine eşit veya daha büyükse, döngüden çık.
  • Bulunan 2.indis değişken değeri çift mi diye kontrol edilir.
  • 0. indis dizi değişken değerine, 1.indis dizi değişken değeri ata.
  • 1. indis dizi değişken değerine, 2.indis dizi değişken değeri ata.
  • Döngü bitince toplam ekrana çıktı olarak bastır.
  • Program bitir.
Yukarıdaki oluşturduğum algoritmaya göre yazdığım basit program kodu aşağıdaki gibidir.
#include <iostream>

using namespace std;

int main(){
    int *sayi = new int(3);
    sayi[0]=1;
    sayi[1]=2;
    int toplam = 2;

    for(int i=0; i < 5; i++){
        sayi[2] = sayi[1] + sayi[0];
        if(sayi[0]>=4000000 || sayi[1]>=4000000 || sayi[2]>=4000000)
            break;
        if(sayi[2]%2 == 0)
            toplam += sayi[2];
        sayi[0] = sayi[1];
        sayi[1] = sayi[2];
    }

    cout << toplam;
    return 0;
}
Bu algoritmayı farklı programlama dillerinde de uygulayabilirsiniz.

Hiç yorum yok:

Yorum Gönderme