Processing math: 100%
Akademisyenler öncülüğünde matematik/fizik/bilgisayar bilimleri soru cevap platformu
1 beğenilme 0 beğenilmeme
1.2k kez görüntülendi

Bir pozitif tam sayının, kendisi hariç bütün pozitif bölenlerinin toplamı kendisine eşit oluyor ise bu sayıya mükemmel sayı denir. Örneğin 6 mükemmel bir sayıdır. (1+2+3=6)

Verilen bir pozitif tam sayının kendisi hariç pozitif bölenlerinin toplamı sayıdan küçük oluyor ise bu sayıya fakir sayı diyelim. Örneğin 10 bir fakir sayıdır. (1+2+5<10) Eğer verilen bir pozitif tam sayının kendisi hariç pozitif bölenlerinin toplamı sayıdan büyük oluyor ise bu sayıya zengin sayı diyelim. Örneğin 12 bir zengin sayıdır. (1+2+3+4+6>12)

Gözlemlenirse 12 sayısı en küçük zengin sayıdır. Zengin iki sayının toplamı olarak yazılabilen en küçük pozitif tam sayı 24 sayısıdır. Matematiksel olarak yapılmış hesaplamalar sonucu 28123 sayısından büyük bütün tam sayıların iki zengin sayının toplamı olarak yazılabildiği biliniyor.

Bu durumda, iki zengin sayının toplamı şeklinde yazılamayan tüm pozitif tam sayıların toplamı nedir?

Veri Bilimi kategorisinde (470 puan) tarafından  | 1.2k kez görüntülendi
Cevap 4179871 ise kod paylasayim..
Evet cevap doğru. İsterseniz paylaşabilirsiniz.
algoritması değilde ,sadece cevap mı aranıyor anlamadım ben.

1 cevap

1 beğenilme 0 beğenilmeme

Mathematica ile soyle yapilabilir. Once sayilarin bolenlerini, sonra toplamlarini bulmaliyiz. DivisorSum[n]  bunun ikisini de yapiyor ama sayinin kendisini de ekliyor toplama. Onun icin sayinin  kendisini toplamdan cikarmamiz gerek.

DivisorSum[n]-n  aradigimiz sey. Peki bu toplam sayinin kendisinden buyuk mu?

DivisorSum[n]-n >nDivisorSum[n] >2n

 

Eger buyukse sayimiz zengin sayi. If kullananarak test ederiz, dogruysa sayisi aliriz, degilse almayiz.

 

zengin[n_] := If[DivisorSum[n, # &] > 2 n, n, Nothing]

 

28123'e kadar olan zengin sayilari bulalim.

zenginSayilar = Table[zengin[n], {n, 28123}];

Bize ikili toplamlar lazim. Aslinda matrisin kosegen dahil ust kismi lazim, 12+18 ile 18+12 ayni toplami verecegi icin iki defa islem yapmaya gerek yok. Subsets fonksiyonu tam aradimiz fonksiyon, zenginSayilar'in 2'li alt kumelerini bulur. Bir sartla, 12+12 almaz. Cunku kumelerde tekrarlayan eleman olmaz.

ikiliZengin = Subsets[zenginSayilar, {2}];

Bize ikiliZengin'lerin toplami lazim. Total /@ ikiliZengin. Ayni olan ikiliZengin'lerin toplami 2×ikiliZengin,(12+12,18+18,... gibi)

Bu iki kumenin birlesimi bize zengin iki sayının toplamı olarak yazılabilen sayilari verir.

Zengin iki sayının toplamı olarak yazılamayan sayilari Complement ile buluruz ve bu sayilarin toplami istenen cevap olur..

 

zengin[n_] := If[DivisorSum[n, # &] > 2 n, n, Nothing]
zenginSayilar = Table[zengin[n], {n, 28123}];
ikiliZengin = Subsets[zenginSayilar, {2}];
Total@Complement[Range@28123,Join @@ {2 zenginSayilar, Total /@ ikiliZengin}]

4179871

 

(2.9k puan) tarafından 
tarafından düzenlendi
20,301 soru
21,851 cevap
73,562 yorum
2,790,904 kullanıcı