Input
Input starts with an integer T (≤ 200), denoting the number of test cases.
Each case starts with a line containing an integer n (1 ≤ n ≤ 1014).
Output
For each case, print the case number and the value returned by the function ‘pairsFormLCM(n)’.
Sample Input
15
2
3
4
6
8
10
12
15
18
20
21
24
25
27
29
Sample Output
Case 1: 2
Case 2: 2
Case 3: 3
Case 4: 5
Case 5: 4
Case 6: 5
Case 7: 8
Case 8: 5
Case 9: 8
Case 10: 8
Case 11: 5
Case 12: 11
Case 13: 3
Case 14: 4
Case 15: 2
对于每个素因子p,答案累加2*e+1,其中e是p的指数
#include<cstdio>
#include<cstring>
typedef long long ll;
const int N=1e7+100;
int t,p,cnt;
ll prime[N/10];
bool iscomp[N];
ll n,ans;
void primetable()
{
p=0;
for(int i=2;i<N;i++)
{
if(!iscomp[i])prime[p++]=i;
for(int j=0;j<p&&prime[j]*i<N;j++)
{
iscomp[i*prime[j]]=1;
if(i%prime[j]==0)break;
}
}
}
void div()
{
for(int i=0;i<p;i++)
{
if(prime[i]*prime[i]>n)break;
cnt=0;
while(n%prime[i]==0)
{
n/=prime[i];
cnt++;
}
if(cnt)ans*=cnt*2+1;
}
if(n>1)ans*=3;
}
int main()
{
//freopen("in.txt","r",stdin);
scanf("%d",&t);
primetable();
int ca=0;
while(t--)
{
ans=1;
scanf("%lld",&n);
div();
printf("Case %d: %lld\n",++ca,ans/2+1);
}
return 0;
}
总结
无