0

非常に大きな数 (600851475143) の因数を取得しようとしています。私は C++ を使用していますが、コンソールは何年も使用し続けているようです。番号 8462696833 に達しましたが、アンダースコアが点滅しています。それが役立つ場合は、Intel i7 プロセッサを使用しています。完了するまでにどのくらいの時間がかかりますか? 私はC ++にかなり慣れていないので、ここに私のコードがあります。

#include <iostream>
using namespace std;

int main()
{
    long long n = 600851475143, a = 0, b = 1, c = 0;
    while (c < 600851475143)
    {
        a = n % b;
        if (a == 0)
        {
            cout << b << endl;
        }
        ++b;
        ++c;
    }
    return 0;
}
4

1 に答える 1

3

775,147すべての要因を見つけるには、(平方根) までテストする必要があります。因数 がある場合、元の数を で割ることでa対応する値を得ることができます。ba

コードを見せていただければ、他の最適化を提案できるかもしれません。

于 2013-05-05T04:28:02.873 に答える