2015-12-02 70 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