C# Dersleri 52 - Palindrom Sayılar


C# ile Palindrom Sayıları Bulma: Bölümden Kalan Yöntemi ile Çözüm

Bir sayı, tersten okunduğunda da aynı kalıyorsa bu sayıya palindrom sayı denir. Örneğin, 121, 12321 ve 44 gibi sayılar palindrom sayılardır. Bu programda, bir sayının palindrom olup olmadığını kontrol etmek için sayıyı matematiksel olarak tersine çeviren bir yöntem kullanacağız.

Programın Çalışma Mantığı

Programda iki ana metot bulunmaktadır:

  • IsPalindrome(int number): Bir sayının palindrom olup olmadığını kontrol eden metot. Sayıyı tersine çevirmek için bölümden kalan yöntemi kullanır.
  • FindPalindromes(int start, int end): Verilen aralıktaki tüm palindrom sayıları bulan metot.

Main metodu, kullanıcıdan bir aralık alır ve bu aralıktaki tüm palindrom sayıları ekrana yazdırır.

Kod:

using System;

class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine("Palindrom sayıları bulmak için bir başlangıç ve bitiş aralığı girin:");
        
        Console.Write("Başlangıç: ");
        int start = int.Parse(Console.ReadLine());
        
        Console.Write("Bitiş: ");
        int end = int.Parse(Console.ReadLine());
        
        Console.WriteLine($"\n{start} ile {end} arasındaki palindrom sayılar:");
        FindPalindromes(start, end);
    }

    // Bir sayının palindrom olup olmadığını kontrol eden metot
    static bool IsPalindrome(int number)
    {
        int original = number;
        int reversed = 0;

        while (number > 0)
        {
            int remainder = number % 10; // Son basamağı al
            reversed = (reversed * 10) + remainder; // Ters sayıyı oluştur
            number /= 10; // Sayıyı bir basamak küçült
        }

        return original == reversed;
    }

    // Belirtilen aralıktaki palindrom sayıları bulan metot
    static void FindPalindromes(int start, int end)
    {
        for (int i = start; i <= end; i++)
        {
            if (IsPalindrome(i))
            {
                Console.WriteLine(i);
            }
        }
    }
}

Programın Çıktısı:

Kullanıcıdan başlangıç ve bitiş aralığı istendiğinde:

Palindrom sayıları bulmak için bir başlangıç ve bitiş aralığı girin:
Başlangıç: 100
Bitiş: 150

100 ile 150 arasındaki palindrom sayılar:
101
111
121
131
141

Kodun Açıklaması

  1. IsPalindrome metodu: Sayıyı tersine çevirmek için:
    • Son basamağı bulmak için number % 10 işlemini kullanır.
    • Bu basamağı ters sayıya eklemek için reversed = (reversed * 10) + remainder işlemini yapar.
    • Sayının son basamağını silmek için number /= 10 işlemini uygular.
    Son olarak, tersine çevrilen sayı ile orijinal sayıyı karşılaştırır.
  2. FindPalindromes metodu: Verilen aralıkta döngü ile tüm sayıları kontrol eder ve palindrom olanları ekrana yazdırır.

Sonuç

Bu program, sayıyı string'e dönüştürmeden, matematiksel bir yöntem kullanarak palindrom sayılarını bulmaktadır. Bu yöntem, özellikle büyük sayılarla çalışırken daha performanslı olabilir. Recursive metotlar veya daha ileri algoritmalarla bu programı genişletmek de mümkündür.