求一个整数的因子个数
程序员文章站
2022-06-08 12:02:21
...
求因子的个数
公式:
以上内容来自fuzhihong
#include <bits/stdc++.h>
using namespace std;
const int N=1e5;
int vis[N+5];
int ans[N+5];
int flag=0;
void ss(int n);
int yzs(long long n);
int main()
{
long long n;
ss(100000);
while(scanf("%lld",&n)!=-1)
{
printf("%lld: %d\n",n,yzs(n));
}
return 0;
}
void ss(int n)//素数筛
{
memset(vis,1,sizeof(vis));
vis[0]=vis[1]=0;
for(int i=2;i<=n;i++)
{
if(vis[i])
ans[++flag]=i;
for(int j=1;j<=flag&&i*ans[j]<=n;j++)
{
vis[i*ans[j]]=0;
if(i%ans[j]==0)
break;
}
}
}
int yzs(long long n)//求因子数
{
int re=1;
long long now=n;
for(int i=1;ans[i]<=sqrt(n*1.0);i++)
{
int t=1;
while(now%ans[i]==0)
{
t++;
now/=ans[i];
}
re*=t;
}
if(now>1)
re*=2;
return re;
}
下一篇: L2-030 冰岛人 (25分)