Project Euler – Problem 7

Bu problem 10001. asal sayıyı bulmamızı istiyor.

  • İlk olarak, asal bir sayının asal olup olmadığını tespit eden bir “isPrime” fonksiyonu oluşturalım. Bu fonksiyon; eğer sayı asalsa 1, değilse 0 değerini döndürecek.
  • Main içerisinde başlangıç değeri “2” olan number değişkenini ve başlangıç değeri “0” olan i değişkenini tanımlayalım. “Number” gezdiğimiz asal olup olmadığını kontrol ettiğimiz sayı iken, “i” ise kaçıncı asal sayıda olduğumuzu gösteren sayı oluyor.
  • Bİr sonsuz döngü oluşturalım. Döngü içerisinde “isPrime” fonksiyonunu kullanarak “number”ın asal olup olmadığını kontrol edelim. Eğer asalsa i’nin değerini 1 arttıralım.
  • Yine döngü içerisinde i’nin 10001’e eşit olup olmadığını kontrol edelim. Eğer eşitse break deyimiyle döngüden çıkalım.
  • Son olarak döngü içerisinde number’ın değerini 1 arttıralım.

Şimdi bu işlemleri bir programlama dili ile gerçekleştirelim.

#include <stdio.h>

int isPrime(int number);

int main() {

    int number = 2,
    i = 0;

    while(1) {
        if(isPrime(number))
            i++;

        if(i == 10001)
            break;

        number++;
    }

    printf("%d", number);  // Result: 104743

    return 0;
}

int isPrime(int number) {
    for(int i=2; i<=number/2; i++) {
        if(number % i == 0) {
            return 0;
        }
    }

    return 1;
}

Ve sonuç 104743.

Yorum Yaz

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir