I passaggi potrebbero essere questi:
1: Creo un array di elementi inizializzati a 1. Gli elementi che hanno per indici dei numeri primi rimangono uguali a 1, gli altri uguali a zero.
2: Parto dall'indice 2
3:Ogni volta che trovo un elemento uguale a 1, cerco i suoi multipli
4:Azzero tutti gli elementi il cui indice è multiplo dell'elemento trovato, escludendo l'elemento trovato.
5:Gli elementi impostati ancora a 1 sono numeri primi, di conseguenza scarto gli elementi che sono stati impostati a 0.
codice:
#include <iostream>
#include <stdlib.h>
#include <iomanip>
using namespace std;
int main () {
const int size =100; // dimensione array
int a[size];
//1:Creo array di elementi inizializzati a 1
for (int i=1;i<size;i++)
a[i]=1;
//2 , 3, 4 : Cerco i multipli e li imposto a zero
for (int i=2;i<size;i++){
if(a[i]==1){
for(int j=2;j<size;j++){
if(i%j==0){
a[i]=0; //Come faccio ad escludere l'elemento trovato?
}
}
} //se stampo qui, mi dà un array di elementi tutti nulli
}
system("Pause");
return 0;
}
Nel codice manca la condizione 5, perché con questo codice ottengo un array di 100 elementi impostati a zero.Dov'è l'errore??