Я пытаюсь сгенерировать все простые множители числа 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;
}