2015-12-02 49 views
2

我在這裏有一個簡單的因式分解算法。素因分解

void primeFactor(int number){ 
    if (number == 1)return; 

    int x = 2; 
    while (number%x != 0)x++; 

    cout << x << endl; 
    primeFactor(number/x); 
} 

它工作正常的小數字,但是當過我進入一個大的數字,如809800987876,我得到一個-1後約3個因素。

因此,這裏是爲809800987876.

> 2 2 486957767 
> -1 

樣本輸出我怎樣才能解決這個問題?

+1

請不要將您的問題改爲其他問題。如果您有新問題,請使用「Ask Question」鏈接詢問新問題 – NathanOliver

回答

2

您正在溢出int。在一個典型的系統中,int的最大值是2147483647. 809800987876比它大,因此溢出。您可以使用一個long long,它至少包含9223372036854775807.

+2

如果只有我的銀行帳戶出現同樣的問題 – EaziLuizi

+0

謝謝,您有什麼要評論我的算法嗎?它可以更有效率嗎? – JohnCena7070

+0

也不是更好,如果我用_int64來代替? – JohnCena7070