链接: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#include 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; }



