3.约数个数【省模拟赛】 - 蓝桥云课 (lanqiao.cn)
#include<bits/stdc++.h>
using namespace std;
unordered_map<int,int>mp;
int res;
void solve()
{
int n=2023;
for(int i=2;i*i<=n;i++)
{
while(n%i==0) //能被i整除说明是n的约数
{
mp[i]++; // 存一下n的每个约数的指数
n/=i; //把i除尽
}
}
if(n>1)mp[n]++; //最后一个大于根号n的约数
res=1;
for(auto it=mp.begin();it!=mp.end();it++)
{
//求约数个数的公式
res=res*(it->second+1); //约数个数=各个约数的指数+1 的乘积
}
}
int main()
{
int t=1;
while(t--)
solve();
cout<<res<<endl;
return 0;
}