Răspuns :
#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
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;
}
Vă mulțumim că ați ales să vizitați platforma noastră dedicată Informatică. Sperăm că informațiile prezentate v-au fost utile. Dacă aveți întrebări suplimentare sau aveți nevoie de ajutor, nu ezitați să ne contactați. Vă așteptăm cu drag data viitoare și vă încurajăm să ne salvați în lista de favorite!