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).
Răspunsuri la întrebare
cristinasergiu
2023-01-25 02:15:34
#include
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<
Andreea16
2023-01-25 02:16:49
Varianta mai eficientă și care folosește mai puțin spațiu:
#include
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;
}