Project Euler – Problem 4

Bu problemde 3 basamaklı iki sayının çarpımından elde edilen en büyük polindrom sayıyı bulmamız isteniyor.

Polindrom sayı, sağdan ve soldan bakıldığında yazılışı aynı olan sayılardır.

Örneğin; 99, 8008, 42324

Şimdi bu problemi çözebilmek için yapmamız gereken adımları oluşturalım.

  • İlk olarak bir sayının polindrom olup olmadığını tespit eden bir “isPrime” fonksiyonu oluşturalım.
  • isPrime fonksiyonu içerisinde parametre olarak gelen sayıyı ters çevirelim.
  • Eğer ters çevrilern sayı ilk sayıya eşitse bu bir polindrom sayıdır. Geriye 1 değerini döndürelim. Değilse 0’ı döndürelim.
  • Main fonksiyonu içerisinde iç içe 2 döngü oluşturalım. i ve j nin çarpımı polindrom sayı ise ve “largestPalindrome” değişkeninin değerinden büyükse largestPalindrome’a çarpımı atayalım.
  • En son, largestPolindrom değerini ekrana yazdıralım.

Bu işlemleri bir programlama dili ile gerçekleştirelim.

#include <stdio.h>

int isPalindrome(int number);

int main() {

    int largestPalindrome = 0;

    for(int i=999; i>=100; i--) {
        for(int j=999; j>=100; j--) {
            if(isPalindrome(i*j) && i*j > largestPalindrome) {
                largestPalindrome = i*j;
            }
        }
    }

    printf("%d", largestPalindrome);  // Result: 906609

    return 0;
}


int isPalindrome(int number) {

    int temp = number;
    int reverse = 0;

    while(number != 0) {
        reverse = reverse * 10 + number % 10;
        number /= 10;
    }

    if(reverse == temp)
        return 1;
    else
        return 0;
}

Ve sonuç 906609.

Yorum Yaz

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