求因子个数
代码如下:
#include <bits/stdc++.h>
using namespace std;
int prime[1000010];
long long a[100010];
int main ()
{
int sum = 0;
for(int i = 2; i <= 1000000; i++)
if(!prime[i])
{
a[sum++] = i;
for(int j = 2; i*j <= 1000000; j++)
prime[j*i] = 1;
}
int t, cnt = 1;
scanf("%d", &t);
while(t--)
{
long long n;
scanf("%lld", &n);
int ans = 1;
for(int i = 0; i < sum && a[i]*a[i] <= n; i++)
{
int num = 0;
while(n%a[i] == 0)
{
num++;
n/=a[i];
}
ans *= (num+1);
}
if(n>1)
ans *= 2;
printf("Case %d: %d\n", cnt++, ans-1);
}
return 0;
}