J'essaye d'écrire un programme en C++ qui va amorcer les nombres de facteur qui ont 12 chiffres. Voici mon code:Pourquoi est-ce que je ne peux pas donner de nombres premiers de facteur au-dessus d'une certaine grandeur?
#include <iostream>
using namespace std;
int main()
{
long double userInput;
long double divisor = 2;
long double dividend;
cout << "Enter number: ";
cin >> userInput;
dividend = userInput;
do
{
while (static_cast<int>(dividend) % static_cast<int>(divisor) == 0)
{
cout << divisor << endl;
dividend = dividend/divisor;
}
divisor++;
} while (dividend > 1);
return 0;
}
Ce (semble, au moins) fonctionne très bien pour les petits nombres, mais il tombe en panne quand j'utilise des nombres très élevés. Pourquoi est-ce? Dois-je utiliser un type entier plus grand? Ou est-ce quelque chose qui ne va pas avec le code lui-même?
En outre, 'int' peut être aussi petit que 16 bits, donc -65,536 à 65,535 (dans une représentation de deux-complément). –
@PeteBecker: Mise à jour. (BTW, c'est -32768 .. +32767.) –
Je ne pense pas que vous croiriez que je ** vraiment ** signifiait un «int» de 17 bits? –