1) Ciurul lui Eratostene: Să se formeze un vector care să conţină elementele prime mai mici decât un număr dat n, n<1000, utilizând procedeul de excludere prezentat în manualul de matematică (excluderea se va face prin inlocuirea elementului cu 0 şi nu se vor afişa elementele nule).
artur99:
excluderea se face la inserare in vector sau la afisare? lol, nu inteleg de ce ar trebui inlocuit cu 0 odata ce nu se afla in vector?!
Răspunsuri la întrebare
Răspuns de
1
#include <iostream>
using namespace std;
int main(){
int v[1001], n, i, j, nr;
for(i=1;i<=1000;i++)v[i]=i;
v[1]=0;//Nu este nr prim
for(i=2;i<=1000;i++){
if(v[i]!=0){//daca nu l-am eliminat
nr=v[i];
for(j=i+nr;j<=1000;j+=nr){
//Setam toti multiplii lui nr la 0
v[j]=0;
}
}
}
for(i=1;i<=1000;i++)
if(v[i]!=0)cout<<v[i]<<" ";
}
Asa cred ca ar trebui sa fie :D
using namespace std;
int main(){
int v[1001], n, i, j, nr;
for(i=1;i<=1000;i++)v[i]=i;
v[1]=0;//Nu este nr prim
for(i=2;i<=1000;i++){
if(v[i]!=0){//daca nu l-am eliminat
nr=v[i];
for(j=i+nr;j<=1000;j+=nr){
//Setam toti multiplii lui nr la 0
v[j]=0;
}
}
}
for(i=1;i<=1000;i++)
if(v[i]!=0)cout<<v[i]<<" ";
}
Asa cred ca ar trebui sa fie :D
Răspuns de
0
Varianta mai eficientă și care folosește mai puțin spațiu:
#include <iostream>
using namespace std;
const int NMAX = 200000000;
char ciur[NMAX];
int main()
{
int n;
cin >> n;
fill_n(ciur, NMAX, 1);
for(int i=2; i*i<=n; i++) {
if(ciur[i])
for(int j=i+i; j<=n; j+=i)
ciur[j] = 0;
}
for(int i=2; i<=n; i++)
if(ciur[i]) cout << i << ' ';
return 0;
}
#include <iostream>
using namespace std;
const int NMAX = 200000000;
char ciur[NMAX];
int main()
{
int n;
cin >> n;
fill_n(ciur, NMAX, 1);
for(int i=2; i*i<=n; i++) {
if(ciur[i])
for(int j=i+i; j<=n; j+=i)
ciur[j] = 0;
}
for(int i=2; i<=n; i++)
if(ciur[i]) cout << i << ' ';
return 0;
}
Alte întrebări interesante
Matematică,
9 ani în urmă
Limba română,
9 ani în urmă
Limba română,
9 ani în urmă
Limba română,
10 ani în urmă
Limba română,
10 ani în urmă
Limba română,
10 ani în urmă
Matematică,
10 ani în urmă
Istorie,
10 ani în urmă