与えられた数の約数を見つけるために、このコードを書きました。私が実装しようとしている方法は、すべての素因数を見つけ(これは機能します)、同様の素数の数に1を加えた数(除数の数を与えます)を取ります。
例 28 = 2*2 * 7 --> (2+1)*(1+1) = 6
これは私の試みです:
int num = 20;
int next = 0;
int exponent = 0;
int numberOfDivisors = 1;
start:
for (int i = 2; i <= num; i++)
{
next = i;
if (num%i == 0)
{
if (i == next)
{
exponent++;
}
else
{
numberOfDivisors *= (exponent+1);
exponent = 0;
}
if (num != i)
{
num /= i;
goto start;
}
}
}
std::cout << numberOfDivisors << std::endl;
何が欠けているのかわかりません。