• 23-12-2021, 21:38:11
    #1
    Arkadaşlar aşağıdaki C kodunda ben girilen bir sayı ve önündeki 50 sayının mükemmel sayı olup olmadığını tespit edip konsola yazdırmaya çalışıyorum. Kod hata vermeden çalışıyor ama örneğin 6 girdiğimde sadece 6 ve 28'i yazdırması gerekirken arada 24'ü de mükemmel sayı olarak alıyor. Nerede hata yapıyorum görebilen varsa şimdiden çok teşekkür ederim.
    #include<stdio.h>
    
    int main()
    { 
    int girilenSayi;
    printf("Lütfen sayıyı giriniz.\n");
    scanf("%d", &girilenSayi);
    
    int carpan=1, counter=0;
    
    for(int i = 0; i<50; i++, girilenSayi++) {
         for(carpan; carpan<girilenSayi; carpan++) {
           if(girilenSayi % carpan == 0)
           {
           counter = counter + carpan;
              
              if(girilenSayi == counter)
              {
              printf("%d bir mükemmel sayıdır.\n", girilenSayi);
              }
    
           }
    }
        carpan=1;
        counter=0;
    
    }
    
    }
  • 23-12-2021, 21:41:05
    #2
    #include <stdio.h>
     
    main()
    {
        int sayi;
        int toplam = 0;
        
        printf("Bir sayi giriniz: ");
        scanf("%d",&sayi);
        
        for(int i = 1; i < sayi; i++)
        {
            if(sayi % i == 0){
                toplam += i;                   
            }
        }
        if(sayi == toplam){
            printf("%d Sayisi mukemmel .",sayi);
        }
        else{
            printf("%d Sayisi mukemmel degil.",sayi);
        }
    }
  • 23-12-2021, 21:45:32
    #3
    tia adlı üyeden alıntı: mesajı görüntüle
    #include <stdio.h>
     
    main()
    {
        int sayi;
        int toplam = 0;
        
        printf("Bir sayi giriniz: ");
        scanf("%d",&sayi);
        
        for(int i = 1; i < sayi; i++)
        {
            if(sayi % i == 0){
                toplam += i;                  
            }
        }
        if(sayi == toplam){
            printf("%d Sayisi mukemmel .",sayi);
        }
        else{
            printf("%d Sayisi mukemmel degil.",sayi);
        }
    }
    Hocam teşekkür ederim ilettiğiniz kod doğru ancak ben döngü içine alıp kullanıcı örneğin 6 rakamını girdiğinde 6 ve 56 arasındaki sayıların mükemmel olup olmadıklarını tespit etmeye çalışıyorum. Otomatik yapması gerekiyor. Yani 6'yı kullanıcı girdiğinde konsolda yalnızca 6 ve 28'i basması lazım.
  • 23-12-2021, 21:56:03
    #4
    Üyeliği durduruldu
    Sorun, sürekli sadece girilen sayının kontrol edilmesi ve tüm bölenlerin toplanmadan kontrol edilmesidir.

    Wikipedia adlı üyeden alıntı:
    In number theory, a perfect number is a positive integer that is equal to the sum of its positive divisors, excluding the number itself
  • 23-12-2021, 22:02:10
    #5
    KendineCoder adlı üyeden alıntı: mesajı görüntüle
    Sorun, sürekli sadece girilen sayının kontrol edilmesi ve tüm bölenlerin toplanmadan kontrol edilmesidir.



    Çok teşekkür ederim hocam, şimdi anladım.