我正在尝试生成数字 n
的所有质因数。当我给它数字 126
时,它给了我 2、3 和 7,但是当我给它说 8
时,它给了我 2、4 和 8。关于什么的任何想法我做错了吗?
int findPrime(unsigned long n)
{
int testDivisor, i;
i = 0;
testDivisor = 2;
while (testDivisor < n + 1)
{
if ((testDivisor * testDivisor) > n)
{
//If the test divisor squared is greater than the current n, then
//the current n is either 1 or prime. Save it if prime and return
}
if (((n % testDivisor) == 0))
{
prime[i] = testDivisor;
if (DEBUG == 1) printf("prime[%d] = %d\n", i, prime[i]);
i++;
n = n / testDivisor;
}
testDivisor++;
}
return i;
}
即使您能够将 n
除以它,您也在增加 testDivisor
。只有当它不再可分割时才增加它。这将导致 2,2,2
,因此您必须进一步修改它,以免存储重复项,但由于这是一项家庭作业,我认为您应该自己解决这个问题: )
我是一名优秀的程序员,十分优秀!