您的位置:首页 > 其它

UVA 10892 - LCM Cardinality(数学题)

2013-10-21 18:36 253 查看
题目链接

写写,就ok了。

#include <cstdio>
#include <cstring>
#include <string>
#include <cmath>
#include <ctime>
#include <cstdlib>
#include <iostream>
using namespace std;
#define MOD 1000000
#define LL long long
int prim[1000001];
int o[1000001];
int main()
{
int i,j,num = 0,temp;
LL n;
for(i = 2;i <= 1000;i ++)
{
if(!o[i])
{
for(j = i+i;j <= 1000000;j += i)
o[j] = 1;
}
}
for(i = 2;i <= 1000000;i ++)
{
if(!o[i])
prim[num++] = i;
}
while(cin>>n)
{
if(!n) break;
cout<<n<<" ";
LL ans = 1;
for(i = 0;i < num;i ++)
{
temp = 0;
while(n%prim[i] == 0)
{
temp ++;
n /= prim[i];
}
ans *= ((temp+1)*2-1);
}
if(n != 1)
ans *= 3;
cout<<ans/2 +1<<endl;
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: