prog2.0 ha scritto:
quindi mi confermate che questo sarebbe il codice che ottimizza meglio il procedimento?
Diciamo che senza la conoscenza del linguaggio assembly (e a volte non basta nemmeno quella) è difficile sapere quale forma è più veloce.
Puoi fare ulteriori modifiche per sveltirlo, tipo la condizione di questo if
if(indice*indice>x)
può direttamente andare al posto di quella del while (negandola) e il cout fuori dal while; e al posto della coppia
if(indice%2==0)
{
indice++;
}
if(indice%2==1)
{
indice+=2;
}
è più veloce
Nippolo ha scritto:
i+=i%2+1
In ogni caso, se usi gcc da linea di comando, puoi usare -Ofast (O maiuscola) e il compilatore ottimizzerà il tuo codice per renderlo più veloce (a livello di compilazione, quindi ciò che tu vedi è solo un programma più veloce, non ti cambia il codice).
P.S. assumo che tu per codice "ottimo" intenda codice più veloce possibile