Bu benim ilk meydan okumam!
Arka fon
Mükemmel sayı pozitif bir tamsayıdır, kendisi hariç tüm bölenlerinin toplamına eşittir.
Öyleyse 6mükemmel bir sayı 1 + 2 + 3 = 6.
Öte yandan 12, çünkü değil 1 + 2 + 3 + 4 + 6 = 16 != 12.
Görev
Görevin basittir, verilen nmesajlardan birini basacak bir program yaz :
Ben mükemmel bir numarayım çünkü mükemmel bir numara
d1 + d2 + ... + dm = s == n
değilim çünküd1 + d2 + ... + dm = s [<>] n
Nerede
d1, ... dmtüm bölenler bazıları nhariç n.
sTüm bölenlerin toplamıdır d1, ..., dm(yine, olmadan n).
[<>]ya <(eğer s < n) ya da >(eğer s > n) 'dir.
Örnekler
İçin nolan 6"1 + 2 + 3 = 6 == 6, çünkü mükemmel bir sayı değilim":
için nolan 12"bir tam sayı değilim 1 + 2 + 3 + 4 + 6 = 16> 12, çünkü,"
için nbir varlık 13: "Mükemmel bir numara değilim çünkü 1 = 1 <13"
kurallar
ndilinizin standartlarından daha büyük değilint.nStandart girişten, komut satırı argümanlarından veya bir dosyadan okuyabilirsiniz .- Çıktı mesajı standart çıktıya yazdırılmalıdır ve çıktıda ek karakter görünemez (izleyen boşluk veya satırsonu olabilir)
- Görevi (veya ana bölümünü) sizin için çözecek herhangi bir yerleşik veya kütüphane işlevi kullanamazsınız. Hayır
GetDivisors()ya da onun gibi bir şey. - Diğer tüm standart boşluklar geçerlidir.
kazanan
Bu kod-golf yani bayt cinsinden en kısa kod kazanır!
=ve ==aynı denklemde? Bu hiç mantıklı değil. d1 + d2 + ... + dm = s = nIMO olmalı .