目录
牛客_因子个数(简单模拟)
解析代码
题意就是求一个数字的因子(>=2的最小不能整除数字)个数:可以从最小因子2到数字的最大因子数(数字的平方根)开始判断是否能够取余可以则循环取余直到取余不为0,因子个数+1;否则使用下一个因子计算;最终整除了各个因子数之后剩余的数字不为1则本身也是一个因子,因此因子数+1。
#include <iostream>
#include<math.h>
using namespace std;
int main()
{
int n = 0, cnt = 0;
while (cin >> n)
{
cnt = 0;
for (int i = 2; i <= sqrt(n); i++)
{
if ((n % i) == 0)
{
while ((n % i) == 0)
{
n /= i;
}
cnt++;
}
}
if (n != 1)
cnt++;
cout << cnt << endl;
}
return 0;
}