我做了這個函數,它計算從用戶獲得的數字(n)的素數分解。由於它不會多次打印相同的因子,因此我遇到了問題。素數分解函數輸出
例如:
3960的質因子分解爲:
11 5 3 3 2 2 2
但是我的程序只打印出:
11 5 3 2
誰能幫我查明原因,並幫助我找到解決方案?
void primefact(int n)
{
Stack f;
assert(n >= 0);
bool prime;
for(int d = 2; d <= n; d++) // Test for factors > 1
{
if(n % d == 0)
{
prime = true;
for(int j = 2; j < d; j++) // Test for prime
{
if(d % j == 0) // It is not prime
prime = false;
}
if(prime)
f.push(d);
}
}
while(!f.empty())
{
cout << f.top() << endl;
f.pop();
}
}
這將是一個恆星* *時間,通過這段代碼與調試器行走。 – WhozCraig 2014-10-29 19:52:54