Barátságos számok

logo

Volt egyszer egy király, aki nagy matematikusnak képzelte magát. Egyszer azt mondta az egyik rabnak: "Adj fel nekem egy feladatot, s én megoldom. Amíg nem ismerem a megoldást, addig szabadon jöhetsz-mehetsz, de amint tudom rá a választ, a fejed elválik a nyakadtól!" A fogoly nagyon ravasz fejtörőt eszelt ki:

A 220 és a 284 úgynevezett barátságos számpár. A 220 valódi osztóinak összege 284-et ad:

1 + 2 + 4 + 5 + 10 + 11 + 20 + 22 + 44 + 55 + 110 = 284,

a 284 valódi osztónak összege pedig 220-szal egyenlő:

1 + 2 + 4 + 71 + 142 = 220.

A királynak az értékben ezek után következő két barátságos számot kellett volna meghatároznia. A történet szerint a rab kiszabadult, és békés öregkorban halt meg, mert a király sohasem oldotta meg a feladatot.

Barátságos számpárok előállítására több módszer is van. Az egyik a következő. Legyen

a = 3 • 2x - 1

b = 3 • 2x-1 - 1

c = 9 • 22x-1 - 1

Ha x nagyobb 1-nél, és a, b, c mindegyike prímszám, akkor 2xab és a 2xc barátságos számpárt alkot. Ha például x = 4, akkor a = 47, b = 23 és c = 1151. Mindhárom érték prímszám.

Ebből

24 • 47 • 23=17 296 (2xab)

és

24 • 1151 = 18 416 (2xc)

A játék algoritmusának mondatszerű leírása:

Program baratsagosszamok:

Ki: Barátságos számok

Ciklusvátozó(a) = 1-től 7000-ig

s = 0

Ciklusváltozó(d) = 1-től a/2-ig

Ha a/d == INT(a/d) akkor

    s = s + d

Elágazás vége

Ciklus vége

Ha s>a akkor

b = s

t = 0

Ciklusváltozó(f) = 1-től b/2-ig

Ha b/f == INT(b/f) akkor

t = t + f

Elágazás vége

Ciklus vége

Ha t=a akkor

Ki: a, b

Elágazás vége

Elágazás vége

Ciklus vége

Program vége