Kezdőoldal » Számítástechnika » Programozás » Hogyan lehet listázni prímszám...

Hogyan lehet listázni prímszámokat Pythonban?

Figyelt kérdés

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!



2014. nov. 27. 18:55
 1/7 anonim ***** válasza:

> ezt for vagy while ciklussal egyszerűbb csinálni?


Teljesen mindegy, amelyikkel kényelmesebb.

2014. nov. 27. 18:57
Hasznos számodra ez a válasz?
 2/7 anonim ***** válasza:
2014. nov. 27. 19:24
Hasznos számodra ez a válasz?
 3/7 A kérdező kommentje:

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.

2014. nov. 27. 19:35
 4/7 Ozmium42 ***** válasza:
100%

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

2014. nov. 27. 21:10
Hasznos számodra ez a válasz?
 5/7 Ozmium42 ***** válasza:
100%

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

2014. nov. 27. 21:18
Hasznos számodra ez a válasz?
 6/7 Ozmium42 ***** válasza:
100%

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***

2014. nov. 27. 21:23
Hasznos számodra ez a válasz?
 7/7 anonim ***** válasza:
Szexi vagy, Oz :*
2014. nov. 30. 00:00
Hasznos számodra ez a válasz?

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!