C 语言- 为什么大数不起作用?

问题描述 投票:0回答:0

此代码测试插入的数字是素数还是合数。 它适用于小数字。但是,当使用大数字(+- 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;
}
c math numbers primes largenumber
© www.soinside.com 2019 - 2024. All rights reserved.