Kezdőoldal » Számítástechnika » Programozás » Tökéletes szám keresés C#-ban?

Tökéletes szám keresés C#-ban?

Figyelt kérdés

Van egy alap kódom ami eldönti egy számról hogy tökéletes-e vagy sem, egészen 33550336-ig gyorsan működik azonban a következő tökéletes számot már nagyon-nagyon lassan számítja, konkrétan türelmem se volt végig várni mire kiírja az eredményt.Van valakinek esetleg valami ötlete hogy hogyan lehetne megcsinálni azt, hogy a nagyobb számokról is viszonylag gyorsan, ne 2 nap alatt döntse el hogy tökéletesek vagy sem?


int osszeg = 0;

long szam = long.Parse(Console.ReadLine());

for (int i = 1; i <= szam/2; i++)

{

if(szam%i==0)

{

osszeg = osszeg + i;

}

}


if (osszeg == szam)

{

Console.WriteLine("Tökéletes szám");

}

else

{

Console.WriteLine("Nem tökéletes zám");

}

Console.ReadLine();



2020. nov. 22. 20:36
 1/10 anonim ***** válasza:
83%
2020. nov. 22. 20:40
Hasznos számodra ez a válasz?
 2/10 anonim ***** válasza:
16%
bináris kereséssel
2020. nov. 22. 22:08
Hasznos számodra ez a válasz?
 3/10 A kérdező kommentje:
Amit küldtél az is ugyan olyan lassú :/
2020. nov. 22. 22:59
 4/10 anonim ***** válasza:
87%
Nem lehet ugyanolyan lassú az egyesé és a tied. Vagy hazudsz, vagy rosszul implementálod. Mondjuk eleve csak copy+paste-elni kell. Kifejezetten kevés ismert perfect number van amúgy, akár egy setbe is felveheted őket.
2020. nov. 22. 23:26
Hasznos számodra ez a válasz?
 5/10 A kérdező kommentje:
Véletlen nem írtam át az egyik int-es változót longra most már jó köszi szépen.
2020. nov. 22. 23:44
 6/10 anonim ***** válasza:
100%
2-es vagyok, sorry a rosssz válaszért, rosszul értelmeztem a dolgot - valóban nagy ökörséget mondtam.
2020. nov. 23. 09:15
Hasznos számodra ez a válasz?
 7/10 anonim ***** válasza:

Egyébként tényleg kevés ismert tökéletes szám van, 51, így tényleg elég, ha csak felveszed őket egy halmazba és a program megnézi, hogy benne van-e.

Ennek pedig a következő az oka:

1) Ha csak annyi a célod, hogy írj egy programot, ami eldönti egy számról, hogy tökéletes-e, akkor azt megoldottad.

2) Ha az a célod, hogy új tökéletes számot találj, hát...Az nagyjából esélytelen ilyen módszerrel. Ez egy elég kutatott terület.


Kis érdekesség: Minden páros tökéletes szám (2^n - 1)*2^(n-1) alakú.

És ha ez tökéletes szám, akkor 2^n - 1 pedig prím.

A legnagyobb ismert tökéletes szám esetén n=82 589 933.

Az pedig nem ismert, hogy van-e páratlan tökéletes szám, mint ahogy az sem, hogy végtelen sok van-e.

2020. nov. 23. 10:21
Hasznos számodra ez a válasz?
 8/10 anonim ***** válasza:
0%
Thank you for doing this
2020. nov. 23. 12:32
Hasznos számodra ez a válasz?
 9/10 tabaki ***** válasza:
100%

„Kifejezetten kevés ismert perfect number van amúgy, akár egy setbe is felveheted őket.”

„Egyébként tényleg kevés ismert tökéletes szám van, 51, így tényleg elég, ha csak felveszed őket egy halmazba és a program megnézi, hogy benne van-e.”


Könnyek szöknek a szemembe, üzen a múlt... Három éve ennek a nyilvánvalóan hasznos gyakorlati megközelítésnek még a gondolatáért is lehülyéztek minket, mert a kiszámolás mellett ennek is meg mertük említeni a lehetőségét. Azóta értelmesebb embertársaink följebb pontoztak már, de érdekes lehet elolvasni:

https://www.gyakorikerdesek.hu/szamitastechnika__programozas..

2020. nov. 23. 19:09
Hasznos számodra ez a válasz?
 10/10 EgyGabor ***** válasza:

Talán GPU-ra átírva lenne gyorsabb. Főleg a keresésben a sokszálúság miatt (azaz hogy rengetet candidate-et tesztelne párhuzamosan)


"Kicsit" ritkák

[link]

2020. nov. 25. 09:09
Hasznos számodra ez a válasz?

Kapcsolódó kérdések:




Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!