complicato ha scritto:
Codice testato e risulta funzionante. Lo posto per evitare in futuro di riaprire una discussione a riguardo, da altri.
Il tuo codice, anche se "funziona" in realtà NON dovrebbe essere preso certo come riferimento. Hai fatto diverse cose inutili e comunque non hai seguito cosa ho detto prima.
Per prima cosa, hai fatto un array di 100 boolean, quindi il massimo rappresentabile come indice è 99 ma poi hai fatto sqrt(100) che è corretto solo perché poi hai fatto indice < x. Ma in generale dovresti prendere la radice del valore massimo, trattarla come "intero" e usarla "inclusivamente".
Poi hai usato ben 3 moltiplicazioni (ti assicuro che non servono ... al massimo una). E comunque una cosa non l'hai compresa. Nel corpo del ciclo
esterno, la prima cosa da fare è testare se il valore è già "barrato" (cioè nell'array valori[indice] è
true), perché se è così, quel valore è già un multiplo di un altro valore precedente e quindi
il ciclo interno non serve farlo!
Se vuoi veramente programmare, devi anche saper "ragionare".