Hogyan lehet listázni prímszámokat Pythonban?
Az lenne a feladat, hogy a program listázza egy szám alatt az összes prímet.
A kérdésem az lenne, hogy ezt for vagy while ciklussal egyszerűbb csinálni? (Tudom, hogy van fent neten egy csomó ilyen kérdés, de ez még csak kezdő programozás, nem megyek vele sokra, ha csak beírom, amit még nem is tudok, szeretném megérteni a dolgot.) Előre is köszönöm!
> ezt for vagy while ciklussal egyszerűbb csinálni?
Teljesen mindegy, amelyikkel kényelmesebb.
már sokféleképpen próbálkoztam,legutóbb valami ilyesmit írtam:
import sys
n=int(sys.argv[1])
s:2
while(s<n):
if(n%s)!=0) and ...
print s
s+=1
Az if-es résznél akadtam el, hogy oda mit írjak, hogy a prímeket hozza ki. Amikor for s in range(2,n)-el próbáltam akkor is kb annál a résznél akadtam el.
Hát egyelőre maga a szintaxis is igen kaotikus, nem tudom, hol tanultad, hogy ezt így kell. Mik azok a zárójelek az if után, és mi az, hogy s:2?
Aztán nem csak egy ciklus kell, hanem kettő, amit egymásba ágyazol. A külső ciklus (itt while, de jobb lenne a for, mert így külön megbonyolítod egy változóval, amit neked kell ciklusonként eggyel növelni, for ciklussal meg növekszik magától) egyenként lépked felfelé a számokon. A belső ciklus (legyen ez is for) pedig az adott számot vizsgálja. Legyen egy True/False változó, ami a belső ciklus elején True-ra állítódik, majd ha találsz nulla maradékos osztást, átállítod Falsra, és break-kel megszakítod. Ha a ciklus végén is megmarad a True érték, akkor kiírod a számot, amit vizsgáltál.
n = int(raw_input("Add meg a felső korlátot: ")) # Egyszerűbb, mint a paraméteres megoldás
for s in range(2, n):
___prime = True
___for i in range(2, s):
______if s%i == 0: prime = False
___if prime: print s
Ezt csak úgy itt hagyom:
prime = lambda x: [y for y in range(2, x) if all([y%z for z in range(2, y)])]
for i in prime(int(raw_input("Add meg a felső korlátot: "))): print i
for i in [y for y in range(2, int(raw_input("Add meg a felső korlátot: "))) if all([y%z for z in range(2, y)])]: print i
***flies away***
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
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!