„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
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:"<<mtx[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 ==
|