Python feladat : amit elakarok érni az, hogy n=lehet bármilyen szám annak az osztóit szeretném kiírni ?
eddig jutottam :
while n != 0:
n-= 1
if n % n == 0:
print(n)
de ez alapból rossz















19-es egy példa, 100 osztói sqrt(100)-ig menve:
1 - igen, tehát 100/1 = 100 is.
2 - igen, tehát 100/2 = 50 is.
3 - nem
4 - igen, tehát 100/4 = 25 is.
5 - igen, tehát 100/5 = 20 is.
6 - nem
7 - nem
8 - nem
9 - nem
10 - igen, tehát 100/10 = 10 is.
Hogy jönnek ide a prímszámok?





Hú, vannak bajok.
Kezdjük elölről: a feladat az, hogy egy szám minden osztóját írjuk ki.. nem prímszámokat keresünk..
Tehát.. 100 osztói:
1, 2, 4, 5, 10, 20, 25, 50 és 100
A szám fele és önmaga között nyilván nem találunk több osztót, tehát ha megállunk n/2-nél, akkor már csak magát a számot kell hozzátennünk.
Ha a négyzetgyökéig megyünk, akkor még ugyanannyi osztónk van, mint amennyit eddig találtunk. (Kivéve ha négyzetszám, mert akkor a négyzetgyököt csak egyszer vesszük, annak nincs párja.)
Ezt csak azért nem javasoltam, mert kicsit bonyolultabb átlátni egy kezdőnek.
Aki azt állítja, hogy sqrt(n)-ig menve nem oldható meg a feladat, az téved.
Aki azt állítja, hogy sqrt(n)-nél nagyobb osztója nincs a számnak, az még nagyobbat téved.. és még sérteget is másokat. :D






























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
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!