此代码测试插入的数字是素数还是合数。 它适用于小数字。但是,当使用大数字(+- 18 位小数)时,似乎总是说“质数”。有谁知道问题是什么?---------------------------------------- ---------------------------------------------- ---------------------------------------------- ---------------------------------------------- ---------------------------------------------- ----------------------
int main(void) {
int verificacao=1;
while(verificacao != 0)
{
int raiz;
long int numero;
printf("\nInsira um número : \n\n");
scanf("%ld", &numero);
if(numero<0||numero ==0||numero ==1)
{
printf("\n\n\nO número tem que ser positivo e maior que 1 para ser considerado primo ou composto!\n\n\n\n");
}
else if(numero>0&& numero <=3)
{
printf("\nNúmero primo\n\n");
}
else if(numero>3)
{
int modulo = 1;
raiz= floor(sqrt(numero));
for(int divisor = 2; divisor<= raiz; divisor++)
{
modulo = numero%divisor;
if(modulo == 0)
{
printf("\n\nNúmero composto\n\n");
break;
}
}
if(modulo!= 0)
{
printf("\n\nNúmero primo\n\n");
}
}
}
return 0;
}