因子个数

#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) 内 计算整除过几次 就可以算出不去重的个数

posted @ 2022-10-22 16:13  lemon-Breeze  阅读(25)  评论(0编辑  收藏  举报