12 桁の素因数を計算するプログラムを C++ で作成しようとしています。これが私のコードです:
#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;
}
これは (少なくとも) 小さい数値では問題なく機能しますが、非常に大きな数値を使用すると機能しなくなります。どうしてこれなの?より大きな整数型を使用する必要がありますか? それとも、コード自体に何か問題がありますか?