链接:https://www.nowcoder.com/questionTerminal/e8fb8f89f5d147ec92fd8ecfefe89b0d?answerType=1&f=discussion
来源:牛客网
一个正整数可以分解成一个或多个数组的积。例如36=223*3,即包含2和3两个因子。NowCoder最近在研究因子个数的分布规律,现在给出一系列正整数,他希望你开发一个程序输出每个正整数的因子个数。
输入描述:
输入包括多组数据。
每组数据仅有一个整数n (2≤n≤100000)。
输出描述:
对应每个整数,输出其因子个数,每个结果占一行。
示例1
输入
30
26
20
输出
3
2
2
解题思路:实际是求一个整数的质因子个数,若一个整数没有被[2,n的平方根]之间的数整除,也不是1,则说明这个整数是质数,也可以被自身整除,则count++;若能被[2,n的平方根]之间的数整除,再进入while循环,只要能%,则除去i,最后也只有i这一个质因子,count++,再循环i.
#include<iostream>
#include<math.h>
using namespace std;
int main()
{
int n;
while(cin>>n)
{
int count = 0; //质因子个数
for(int i = 2; i <= sqrt(n); i++)
{
if(n%i == 0)
{
while(n % i == 0)
{
n /= i;
}
count++;
}
}
//当前n为质数,没有被前面任何一个数整除,也不等于1
if(n != 1)
{
count++;
}
cout << count << endl;
}
return 0;
}