找到除数的数量?

Aar*_*AAA 3 c++

我编写此代码是为了找到给定数字的除数的数量.我试图实现的方法找到所有素数因子(有效)并获取相似素数的数量加一(给出除数的数量).

例如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;
Run Code Online (Sandbox Code Playgroud)

我只是无法弄清楚我错过了什么.

per*_*eal 6

从评论中可以看出,使用goto很糟糕.经过一些清理后,您的代码归结为:

#include <iostream>
int main() {
  int num = 20; 
  int numberOfDivisors = 1;

  for (int i = 2; i <= num; i++)
  {
    int exponent = 0;
    while (num % i == 0) {
        exponent++; 
        num /= i;
    }   
    numberOfDivisors *= (exponent+1);
  }

  std::cout << numberOfDivisors << std::endl;
  return 0;
}
Run Code Online (Sandbox Code Playgroud)