码迷,mamicode.com
首页 > 其他好文 > 详细

POJ 3090 Visible Lattice Points 欧拉函数

时间:2014-07-23 16:26:41      阅读:218      评论:0      收藏:0      [点我收藏+]

标签:os   io   for   re   c   res   

#include <iostream>
#include <cmath>
using namespace std;

//点(x,y)可见当且仅当x,y互质,那么我仅仅只要知道
int euler(int x)
{// 就是公式
int i, res=x,tmp;
tmp= (int)sqrt(x * 1.0) + 1;
for (i = 2; i <tmp; i++)
if(x%i==0)
{
res = res / i * (i - 1);
while (x % i == 0) x /= i; // 保证i一定是素数
}
if (x > 1) res = res / x * (x - 1);
return res;
}

int main()
{
int t;
cin>>t;
for(int i = 1; i <= t;i++){
int num;
cin>>num;
long long ans=0;
//ans=(euler(1)+euler(2)+...+euler(n))*2+1
for(int i = 1;i <= num;i++){
ans+=euler(i);
}
cout<<i<<" "<<num<<" "<<ans*2+1<<endl;
}
return 0;
}

//点(x,y)可见当且仅当x,y互质

POJ 3090 Visible Lattice Points 欧拉函数,布布扣,bubuko.com

POJ 3090 Visible Lattice Points 欧拉函数

标签:os   io   for   re   c   res   

原文地址:http://www.cnblogs.com/tianxia2s/p/3863208.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!