#include<iostream> #include<math.h> using namespace std; int main() { int n; while(cin>>n) { int sum=0; //直到它的平方根 最大因子 for(int i=2;i<=sqrt(n);i++) { //如果找到一个能整除的数 if(n%i==0) { //就一直整除它 直到它没办法整除这个数了 就跳出来 因子+1 //例如: 36/2=18/2=9 9的时候没办法整除跳出来 //下次到n为9 开始找9的因子 while(n%i==0) { n/=i; } sum++; } } if(n!=1)//当不为1时 那么之前的因子必须乘上它 才能得到最开始的n 那么这个也算 //n的因子 也必须加上 只不过它是个素数 没办法整除的 { sum++; } cout<<sum<<endl; } return 0; }
这是计算因子个数后 去重的 如 36 2 2 3 3 是4个 去重后2个
如果要计算不去重的 那么就在while(n%i==0) 内 计算整除过几次 就可以算出不去重的个数
标签:int,个数,while,因子,计算,include From: https://www.cnblogs.com/LonelyMoNan/p/16816331.html