Duda C++

eR_NaNo

Tng una dudilla y no consigo resolverla, tengo el siguiente codigo:

#include<stdio.h>
#include<math.h>

void main()
{
int num, resto; double raiz;

printf("Introduce un numero:\n");
scanf("%d",&num);

if (num%2==0) printf("El numero %d no es primo.\n", num);

raiz=sqrt(num);

while (raiz>1)
{
	resto=num%(int)raiz;
	if (resto==0)
	{
		printf("El numero %d no es primo.",num); break;
	}
	else (int)raiz--;
}
printf("El numero %d es primo.",num);

}

Lo q se pretende es obtener si un numero es primo o no, y mi duda se presenta cuando en, resto=num%(int)raiz; el valor de raiz es 1.xxxx ya que al utilizar el modificador cast, solo toma la parte entera, por lo q al realizar la division por 1, el resto siempre será cero, y entrará en el if.

¿Alguien me puede decir cómo puedo salvar esto?

Pd.:Si no es el foro adecuado que sea movido, no sabia donde ubicarlo.

B

pq no defines directamente raiz como entero?

o si vas a necesitar ese valor, define otra var raiztrunc, y te ahorras tener que hacer mil castings xD

tu duda tu mismo la resuelves!

evalua cuando la raiz sea menor de 2 tb

eR_NaNo

vale tio... habia leido q con el sqrt solo se podian declarar las variables tipo double... como simplemente soy un enteraillo de esto, no domino muxo el lenguaje, y pasa lo q pasa xDD ya ta solucionao todo... creo xD

Thx!!!

eR_NaNo

Tengo otra dudilla...

Alguien me puede decir como darle a un array una dimension x leida mediante un scanf?

eR_NaNo

Nadie sabe nada?? :(

Usuarios habituales