Duda programa en C

BiGLoKe

Saludos.
Tengo propuesto un ejercicio de programacion, en el cual debo de introducir numeros por teclado hasta que le ponga un numero negativo y decirme cuantos numeros primos he introducido.

El problema viene por que, cuando meto el numero negativo, se sale del bucle del programa PERO me lo cuenta como positivo y me lo añade en la lista de primos.
Alguien podria echarme una mano para evitar esto?

El codigo es este: http://pastebin.es/1700

cabron

primo = 1;

Asignas a primo el valor 1.

while((divisor<=num/2) && primo==1)

Cuando num es negativo, esa condición no se cumple, por lo tanto se salta el while, y primo sigue valiendo 1.

if(primo==1)
{
cant++;

Puesto que no has cambiado el valor de primo y sigue valiendo uno, entra dentro del if.

dagavi

Por cierto, el número primo no tienes porque llegar hasta num/2

Es hasta la raiz de NUM, o lo que es lo mismo i*i <= num.

Como ya te han dicho si metes el primer número un negativo lo toma como primo puesto que hace el DO, que pone PRIMO a 1 y finalmente como está a 1 incrementa el contador.

Usuarios habituales

  • dagavi
  • cabron
  • BiGLoKe