Kezdőoldal » Számítástechnika » Programozás » Python feladat : amit elakarok...

Butt kérdése:

Python feladat : amit elakarok érni az, hogy n=lehet bármilyen szám annak az osztóit szeretném kiírni ?

Figyelt kérdés

eddig jutottam :

while n != 0:

n-= 1

if n % n == 0:

print(n)

de ez alapból rossz



2021. szept. 25. 10:59
1 2 3 4 5
 31/42 anonim ***** válasza:
0%
30 te értetlenkedsz azon, hogy mi köze van a prímszámoknak az osztók számához
2021. szept. 25. 13:03
Hasznos számodra ez a válasz?
 32/42 anonim ***** válasza:
31-es nem te írtad a 15-ös választ?
2021. szept. 25. 13:04
Hasznos számodra ez a válasz?
 33/42 anonim ***** válasza:
0%
nem. Viszont a kérdező rájöhetett volna magától, hogy van egy "matematikai szabály" (nem biztos, hogy ismert), ami szerint elég sqrt-ig viszgálni az osztókat, mert utána ugyan annyit találnánk mint az sqrt-ig találtunk. Nem tudom ezt a trükköt hányan ismerik, de erre mindenkinek magától kell rájönnie, mert nem tanítanak ilyeneket. (ha ismert matematikai szabály, akkor talán valami matekszakon egyetemen)
2021. szept. 25. 13:23
Hasznos számodra ez a válasz?
 34/42 anonim ***** válasza:
Akkor a 19-et sem te írtad?
2021. szept. 25. 13:29
Hasznos számodra ez a válasz?
 35/42 anonim ***** válasza:
0%

"Aki azt állítja, hogy sqrt(n)-ig menve nem oldható meg a feladat, az téved."

Nem, igazuk van: gyök-n-ig megtaláljuk a szám összes prím osztóját. Az összes prím osztó ismeretében előállítható az összes osztó. Igaz, ez egy elég komplikált kombinatorikus feladat.


Én valami olyasmivel próbálkoznék, hogy elkezdem maradékosan osztani a számot egyre nagyobb prímekkel. Ezzel meglenne a szám prímtényezőkre osztása, ha van a prímszámokról listánk, akkor ez nagyon, nagyon gyors lenne. Ezután a prímszámok kombinációja megadná az összes osztót. Kíváncsi vagyok, hogy ez a módszer mikortól kezdve lenne gyorsabb. Nagy számoknál nagyon-nagy lehet a különbség.

2021. szept. 25. 16:45
Hasznos számodra ez a válasz?
 36/42 anonim ***** válasza:

"Aki azt állítja, hogy sqrt(n)-ig menve nem oldható meg a feladat, az téved."

ha! Nem megy a szövegértés úgy látszik. :D

2021. szept. 25. 16:47
Hasznos számodra ez a válasz?
 37/42 anonim ***** válasza:
100%
#35 ne legyél már hülye, többen leírták már az sqrt(n) megoldást, legalább olvass vissza.
2021. szept. 25. 16:55
Hasznos számodra ez a válasz?
 38/42 anonim ***** válasza:

Baszki ez egy józan paraszti ésszel megoldható feladat sqrt(n) komplexitással, nem tudom miért kevernek bele egyesek prímtényezőket.

Ha A szám osztója X, akkor a szám nyilván felírható A = X * Y alakban, ahol Y is osztója lesz. Innen csak át kell rendezni az egyenletet, hogy megkapjuk Y-t.

Az is nyilvánvaló, hogy nem kell sqrt(n)-nél tovább vizsgálni, mert az a fölötti értékek csak önmaguknál kisebb számmal szorozva lehetnének megoldások, de a kisebb számokat már megvizsgáltuk az előző lépésekben.

2021. szept. 25. 17:20
Hasznos számodra ez a válasz?
 39/42 anonim ***** válasza:

Puszta kíváncsiságból írtam egy scriptet, ami 775,514,817-nek 1.3s alatt visszatér az összes osztójával. Kíváncsi vagyok más megoldások hogyan teljesítenek. Akit érdekel: [link]


(mondjuk volt egy kb 30sec, mire letölti az első 50M primet :D)

2021. szept. 25. 22:18
Hasznos számodra ez a válasz?
 40/42 anonim ***** válasza:

#39 az kifejezetten hulladék futásidőnek és valami szuboptimális megoldásnak tűnik, de nincs hozzáférésem a google drive linkhez.

Miért nem dobod fel pastebin-re?

2021. szept. 26. 09:06
Hasznos számodra ez a válasz?
1 2 3 4 5

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, 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!