Şimdi Ara

Bağdaşık sayıları bulan kod yazınız

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
4
Cevap
0
Favori
566
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • Bağdaşık sayılar (ing. amicable numbers) nedir?

    d(n), n’in tam bölenlerinin toplamı olsun. Yani örneğin 8'in tam bölenleri 1 2 ve 4'tür dolayısıyla d(8) = 1+2+4=7'dır.

    a ≠ b iken, eğer d(b) = a ve d(a) = b oluyorsa, a ve b bağdaşık sayılardır.

    Örneğin 220’nin tam bölenleri 1, 2, 4, 5, 10, 11, 20, 22, 44, 55 ve 110’dur dolayısıyla d(220) = 284.

    284’ün tam bölenleri 1, 2, 4, 71 ve 142 ‘dir ve d(284) = 220

    Bu durumda 220 ve 284 bağdaşık sayılardır. Bu gönderi kapsamında bunlara kısaca "bağdaşık çift" diyeceğiz.

    220 ve 284 dahil ilk 5 bağdaşık çifti bulan kod yazınız :)



    < Bu mesaj bu kişi tarafından değiştirildi Tuğkan-0153 -- 17 Eylül 2020; 13:17:37 >
    < Bu ileti mini sürüm kullanılarak atıldı >



  • Kod

    Yığını:
    #include <bits/stdc++.h> using namespace std;   int main(){ const auto d = [](int n){ int ret = 0; for(int i=1;i<n;i++)if(n%i==0)ret+=i; return ret; }; map<int,int> m; for(int i=2;m.size()<5;i++){ if(i!=d(i)&&!m.count(d(i))&&i==d(d(i))){m[i]=1;cout <<i <<' '<< (d(i))<<'\n';} } return 0; }
  • hynx kullanıcısına yanıt
    Orada 12-13 satırda yaptığınız işlem Raku ile hiç kasmadan sadece 2 satır :)
    Okey bu çözüm biraz yavaş çalışıyor ama hiç optimizasyon yapmadım ve kasmadım :)

    Bağdaşık sayıları bulan kod yazınız


    edit: sonuçları formatlayabilmek için hash (c++'daki map'in karşılığı) e attım ve Raku'da hash 'te sıra yok o yüzden sonuçlar rasgele sırada cıkıyor. Sıralı olarak da basabilirim fakat 2. satırı daha fazla uzatmamak için öyle bıraktım. Aslında hiç hash'e atmadan da formatlama yolu vardır ama bakmadım :)

    edit 2: Raku'daki 'given' adındaki değişken tanımlayıcıda fonksiyon da tanımlanabiliyormuş. fonksiyon tanımını given bloğuna atınca çözüm yana doğru cok uzamadan tek satıra iniyor :)



    < Bu mesaj bu kişi tarafından değiştirildi Tuğkan-0153 -- 18 Eylül 2020; 0:55:50 >
    < Bu ileti mini sürüm kullanılarak atıldı >




  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.