C#

C# Yarı Mükemmel Sayı Bulma

Merhabalar, C# derslerimize kaldığımız yerden devam ediyoruz. Bu dersimizde C# ile yarı mükemmel sayı bulmayı anlatacağım. Hadi başlayalım !

Öncelikle yarı mükemmel sayının ne olduğundan bahsedeyim.

Yarı mükemmel sayı, bir sayının kendisi hariç son üç tam sayı bölenlerinin toplamı sayının kendisine eşitse, o sayıya yarı mükemmel sayı denir. Bende bu yazımda klavyeden girilen bir sayının yarı mükemmel sayı olup olmadığını bulup kullanıcıya bildireceğiz. Bunun için öncelikle kullanıcıdan bir sayı isteyelim ve bunu integer tipteki bir değişkene atayalım.

Console.Write("Sayıyı Giriniz: ");
int sayi = Convert.ToInt32(Console.ReadLine());

Şimdi geldik asıl meseleye, yani girilen sayının tam sayı bölenlerini bulup son 3 tanesini toplamaya. Bir sayının tam sayı bölenlerini bulmanın en kolay yolu, bir tane for döngüsü ile sayının yarısı kadar dönmek ve her adımda sayının döngünün o andaki değerine tam olarak bölünüp bölünmediğini kontrol etmek ve bölünüyorsa dışarıda oluşturulan bir liste içerisine eklemek. Döngünün ardından diziyi ters çevirip ilk 3 tanesini alıp toplamak ve toplamın sayının kendisine eşit olup olmadığını kontrol etmek. Eşitse kullanıcıya girdiğiniz sayı yarı mükemmel sayıdır, eşit değilse girdiğiniz sayı yarı mükemmel sayı değildir gibi bilgi mesajı vermek. Teorik kısmını anlattık, şimdi de kodunu yazalım;

List<int> dizi = new List<int>();
for(int i = 0; i &lt; sayi / 2; i++)
    if(sayi % i == 0)
        dizi.Add(i);
dizi.Reverse();
int toplam = 0;
if(dizi.Length > 3)
    for(int i = 0; i < 3; i++)
        toplam += dizi[i];
if(toplam == sayi)
    Console.WriteLine("Girdiğiniz Sayı Yarı Mükemmel Sayıdır.");
else
    Console.WriteLine("Girdiğiniz Sayı Yarı Mükemmel Sayı Değildir.");

Kodu da yazdık ama son olarak hangi kodun ne iş yaptığına bakalım. İlk satırda zaten yeni bir liste oluşturduk, 2-3-4. satırda koddan önce teorik olarak anlattığım gibi sayının yarısı kadar (yarısı dahil) döngü dönüp her adımda sayının döngünün o anki değerine tam olarak bölünüp bölünmediğini kontrol ettik. Tabi bu kontrol işlemini mod alma ile yaptık, -ki zaten biliyorsunuzdur- mod alma işlemi sonucunda ilk sayının ikinci sayıya bölümünden kalanı elde ediyoruz. Bir sayının bir sayıya bölünmesinden kalan sıfır ise, tam olarak bölünüyor demektir. İşte bizde bölümden kalan sıfır ise, yani tam olarak bölünüyorsa döngünün o anki değerini birinci satırda oluşturduğumuz listenin içine attık. dizi.Reverse(); kod satırında diziyi tersine çevirdik. Çünkü yazının en başında yarı mükemmel sayının ne olduğunu anlatırken kendisi tam sayı bölenlerinin son 3 tanesinin toplamı kendine eşit olan dedim, yani en büyük 3 tanesi lazım fakat biz küçükten büyüğe doğru sıralamış olduk. Listeyi tersine çevirirsek bu sefer ilk 3 tanesi en büyük sayılar olacaktır. dizinin eleman sayısı 3’ten büyük olup olmadığını kontrol ettik, çünkü örneğin 6 sayısının kendisi hariç tam sayı bölenleri 2 ve 3, yani 2 tane fakat bize son 3 tanesi lazım, o yüzden kontrol etmemiz gerekiyor. Dizinin eleman sayısı 3’ten fazlaysa ilk 3 tanesini toplayıp toplam adındaki değişkene atadık ve son olarakta toplam değeri kullanıcının girdiği sayıya eşit olup olmamasına göre konsola yazı yazdık. Kodu yazıp derlediğiniz zaman sorunsuz bir şekilde göreceğinize eminim 🙂

Evet bu dersimizde bu kadardı, tüm C# derslerimize buraya tıklayarak ulaşabilirsiniz. Herkese hayırlı günler.

Skorumuz:
Oy Vermek İçin Tıklayın
[Toplam: 0 Ortalama: 0]

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Başa dön tuşu