Igualmente si analisas el otro codigo no es cuadratico por mas que tenga dos while anidados. Fijate que la variable numero aumenta en uno por uno al igual que lo esta haciendo en el tuyo. Y no vuelve a empezar a contar cuando sale del while interno.
Ademas si te fijas tarda casi lo mismo que el otro codigo. Yo creo que la gran diferencia de tiempo se esta perdiendo en el hecho de escribir en pantalla.
Si te fijas bien con cualqioera de los dos codigos si escribimos en un archivo redirigiendo el stdout el algoritmo corre en menos de unsegudno.
Ejecutucando de esta forma:
miprog.exe > salida.txt
o en linux
./miprog > salida.txt
Saludos
Es mas se podria tener ya precargado la serie de fibonacci.
Código C:
Ver originalfor (i = 4 ; i < N ; i++)
if ( (i != 3 && i != 5 && i != 8 && i != 13 && i != 21 && i != 34 && i != 55 && i != 89 && i != 144 ) && (i != 233 && i != 377 && i != 610 && i !=987 && i !=1597 && i !=2584 && i !=4181 && i !=6765 && i !=10946 && i != 17711 && i != 28657 && i != 46368 && i != 75025 && i != 121393 && i != 196418 && i != 317811 ))
cout << i << " ";