/****
唯一分解定理+组合数学:
先不管a <=b
************/
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll maxn = 1e7+50;
bool vis[maxn];
int pr[maxn/2];
ll len = 0;
void E_prime()
{
memset(vis, true, sizeof(vis));
vis[1] = vis[0] = false;
for(ll i = 2; i < maxn; i++)
{
if(vis[i])pr[len++] = i;
for(ll j = 0; j <len&&i*pr[j] <maxn; j++)
{
vis[i*pr[j]] = false;
if(i%pr[j] == 0)break;
}
}
}
int main()
{
E_prime();
int T, cnt = 0;
ios_base::sync_with_stdio(false);
cin>>T;
while(T--)
{
ll n;
cin>>n;
ll ans = 1;
for(ll i = 0; i < len&&pr[i]*pr[i]<= n; i++)
{
if(n%pr[i] == 0)
{
ll cnt = 0;
while(n%pr[i] == 0)
{
cnt++;
n/=pr[i];
}
ans*=(2*(cnt+1)-1);//
}
if(n == 1)break;
}
if(n > 1)ans*=2*(1+1)-1;
cout <<"Case "<<++cnt<<": "<<ans/2+1<<endl;
}
return 0;
}
Pairs Forming LCM(素因子分解+lcm)唯一分解定理+组合数学
最新推荐文章于 2020-06-28 22:24:59 发布