我做了这个函数,它计算从用户获得的数字(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