C Programlama ile Mükemmel Sayıları Nasıl Buluruz (Perfect Numbers)

C dili hakkında bilgiler, kaynaklar, dokümanlar ve örneklerin bulunduğu bölümümüz.
Cevapla
Kullanıcı avatarı
admin
Sistem Geliştiricisi
Sistem Geliştiricisi
Mesajlar: 831
Kayıt: 28 Ağu 2022 04:38
Konum: Database
Meslek: Teknisyen
Teşekkür etti: 454 kez
Teşekkür edildi: 308 kez
İletişim:

C Programlama ile Mükemmel Sayıları Nasıl Buluruz (Perfect Numbers)

Mesaj gönderen admin »

Resim

C Programlama İle Mükemmel Sayıları Nasıl Buluruz (Perfect Numbers)

Mükemmel sayı şöyle açıklanabilir. Kendisi hariç bütün pozitif bölenlerinin toplamı kendisine eşit olan sayılardır. Mükemmel sayı terimini ilk olarak Pisagor ortaya atmıştır. Pisagor'a göre sayılarda mükemmellik, bir sayının bölenleriyle ilgilidir.

6 bir mükemmel sayıdır. Çünkü 6'nın pozitif bölenleri 1,2,3 ve 6'dır. 1+2+3=6 Bunun gibi 28 de mükemmel sayıdır. 28 = 1 + 2 + 4 + 7 + 14 Sayılar büyüdükçe mükemmel sayıları bulmak daha da zorlaşır. Günümüz bilgisayarlarının işlem gücüyle 34 milyondan fazla basamağı olan mükemmel sayılar keşfedildi.

* 6,
* 28,
* 496,
* 8128,
* 33550336,
* 8589869056,
* 137438691328,
* 2305843008139952128


C programlama dili ile iki sayı arasındaki mükemmel sayıları şu şekilde bulabiliriz :

Kod: Tümünü seç

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int x, y, bir, iki, z;
    printf("--------------------------------------- \n");
    printf("Birinci sayiyi giriniz: ");
    scanf("%d", &bir);
    printf("ikinci sayiyi giriniz: ");
    scanf("%d", &iki);

    printf("iki sayi araligindaki mukemmel sayilar: \n");
    printf("--------------------------------------- \n");
    printf("%d ve %d: arasinda \n", bir, iki);
    printf("--------------------------------------- \n");

    for(x=bir; x<=iki; x++)
    {
        z = 0;

        for(y=1; y<x; y++)
        {
            if(x % y == 0)
            {
                z += y;
            }
        }

        if(z == x)
        {
            printf("%d, ", x);
        }
    }
    return 0;
}

Resim
Ekran çıktısı şu şekilde


Sizde bu adreste deneyebilirsiniz :

Kod: Tümünü seç

https://www.programiz.com/c-programming/online-compiler/
Daha zeki olmanın tek yolu, daha zeki bir rakiple oynamaktır.

Etiketler:
Kullanıcı avatarı
admin
Sistem Geliştiricisi
Sistem Geliştiricisi
Mesajlar: 831
Kayıt: 28 Ağu 2022 04:38
Konum: Database
Meslek: Teknisyen
Teşekkür etti: 454 kez
Teşekkür edildi: 308 kez
İletişim:

Re: C Programlama İle Mükemmel Sayıları Nasıl Buluruz (Perfect Numbers)

Mesaj gönderen admin »

Bir başka yöntem ;

Kod: Tümünü seç

#include <stdio.h>
#include <math.h>

// Girilen değere kadar olan mükemmel sayıları ekrana yazdıran fonksiyon.
void perfectNumber(long int num) {
  // Mükemel sayıları saklamak için perfectNum dizisi kullanılıyor.
  // flag ile sayının bölenlerinin toplamının o sayıya eşit olup
  // olmadığını kontrol ediyoruz. counter, i ve j bir sayaçtır.
  int perfectNum[5], counter = 0;
  long int flag, i, j;

  // Bu for döngüsü ile num'a kadar olan mükemmel sayıları bulup
  // perfectNum dizisine kaydediyoruz.
  for (i = 1; i < num; i++) {
    flag = 0;
    for (j = 1; j < i; j++) {
      if (i%j == 0) {
        flag += j;
      }
    }
    // Bölenlerinin toplamı kendisine eşitse bu sayı mükemmeldir.
    if(flag == i) {
      perfectNum[counter] = i;
      counter++;
    }
  }

  // Bulunan mükemmel sayıları ve onların bölenlerini ekrana yazdırıyoruz.
  for (i = 0; i < counter; i++) {
    printf("%i = ", perfectNum[i]);
    for (j = 1; j < perfectNum[i]; j++) {
      if (perfectNum[i]%j == 0) {
        printf("%i ", j);
      }
    }
    printf("\n");
  }

}

int main(int argc, char const *argv[]) {

  // perfectNumber fonksiyonunu çağırıyoruz.
  perfectNumber(10000);

  return 0;
}
Açıklaması :

Bu C programı, belirli bir aralıktaki tüm mükemmel sayıları hesaplar ve yazdırır. Mükemmel sayı, uygun bölenlerinin toplamına eşit olan pozitif bir tam sayıdır. Örneğin, 6'nın tam böleni 1, 2 ve 3'tür ve bu bölenlerin toplamı 6'dır, dolayısıyla 6 mükemmel bir sayıdır.

Program, mükemmellik için kontrol edilecek sayı aralığının üst sınırını temsil eden, num adlı bir tamsayı olan tek bir bağımsız değişken alan perfectNumber adlı bir işlev tanımlar. İşlev önce bulunan mükemmel sayıları depolamak için perfectNum adlı bir diziyi ve bölenleri ve bunların toplamını takip etmek için birkaç başka değişkeni bildirir.

İşlev daha sonra 1'den num'a kadar olan aralıktaki tüm sayıları yinelemek ve mükemmel olup olmadıklarını kontrol etmek için iç içe geçmiş bir döngü kullanır. İç döngü, 1'den num-1'e kadar tüm tamsayıları yineleyerek ve bunların geçerli sayının bölenleri olup olmadığını kontrol ederek mevcut sayının bölenlerinin toplamını hesaplar. Bölenlerin toplamı mevcut sayıya eşitse mükemmel sayıdır ve perfectNum dizisine eklenir.

Son olarak işlev, perfectNum dizisini yineler ve her bir mükemmel sayıyı ve bölenlerini ekrana yazdırır.

Resim
derlenmiş hali ekran görüntüsü
Daha zeki olmanın tek yolu, daha zeki bir rakiple oynamaktır.
Cevapla

“C Programlama” sayfasına dön