sayfa başı

4 Mart 2019 Pazartesi

C Çalışma Soruları – 22 (factorion sayıları)

Necati Ergin Hocamın kendi sayfasında bulunan çalışma sorularını ve cevaplarını burada yanıtlamaya çalıştım. Sorulara buradan ulaşabilirsiniz.


Sayma sayılarında 10’luk sayı sisteminde yalnızca 4 tane factorion sayı var. İyi ama factorion sayı ne demek? Basamaklarının faktöriyelleri toplamı kendisine eşit olan sayıya “factorion” deniyor. Örneğin abc tamsayısı eğer bir factorion ise

   abc = a! + b! + c!
eşitliğinin doğru olması gerekiyor. İlk iki factorion sayının 1 ve 2 olduğu açık. Diğer iki factorion sayıyı da bir C programı yazarak siz bulun. Bir ipucu olarak her iki sayının da 100.000‘den küçük olduğunu söyleyelim.
Yanıt:
Necati Hoca bu sorunun cevabını vermiş.  Blog da tüm çözümler bulunması için bende burada Necati Hoca’nın çözümünü kullandım.


#include <stdio.h>
 
int is_factorion(int val) 
{
    static const int a_facts[] = { 1, 1, 2, 6, 24, 120, 720, 5040, 40320, 362880 };
    int sum = 0;
    int temp = val;

    while (temp)
    {
        sum += a_facts[temp % 10];
        temp /= 10;
        if (sum > val)
           return 0;
    }
    return sum == val;
}
 
int main()
{
    int k;
    
    for (k = 3; k < 100000; ++k)
        if (is_factorion(k))
           printf("%d ", k);
 
    return 0;
}

Hiç yorum yok:

Yorum Gönder

Son Ütücü