„Eratoszthenész szitája” változatai közötti eltérés

[ellenőrzött változat][nem ellenőrzött változat]
Tartalom törölve Tartalom hozzáadva
Thijs!bot (vitalap | szerkesztései)
a r2.6.3) (Bot: következő hozzáadása: lv:Eratostena siets
Nincs szerkesztési összefoglaló
84. sor:
for n in [2, utolso]:
if ez_prim(n): nyomtat n
 
== Programkód C++-ban ==
Ez egy kissé erőforrás-igényes, de jól működő programkód.
//A kettessel kezdünk, kinullázzuk a többszöröseit, (lepes)
//növeljük a lepes valtozót, és a q-t is.
//így a következő q szám többszöröseit is kinullázzuk
//ez addig megy, amíg q el nem éri a bekért számot (n)
//egy szám akkor prím, ha nincs még kinullázva
 
#include<iostream>
using namespace std;
int main(){
 
int lepes=2;//először 2-vel fogunk lépkedni
int n;//a max szám
cin>>n;//bekérés
 
int mtx[n];//legeneráljuk a tömböt
int a=1;
for(int i=0;i<n;i++)mtx[i]=a,a++;//a tömb 0-dik elemétől feltöltjük
//számokkal, egészen n-ig
 
 
for(int q=1;q<n;q++){
 
if(mtx[q]!=0){cout<<"prim:"<<m​tx[q]<<endl;//kezdetben az első szám (2)
//biztosan nem lesz nulla, ezért az prím, a többi még eldől
for(int s=(lepes-1);s<n;s+=lepes)mtx[s​]=0;//kinullázzuk a többszörösöket
}//if vége
lepes++;//megnöveljük a lépést. így már nem kettesével lépked, hanem hármasával.
}//for vége
//vissza a ciklus elejére. ha egy szám nem nulla, kiíródik, és a többszöresit nullázzuk
//ha egy szám nulla, a lépés akkor is minden cilkusban növekszik!
 
system("pause");
}//main vége
 
== Források ==