POJ_3090_Visible Lattice Point_欧拉函数

来源:互联网 发布:ip域名是什么意思 编辑:程序博客网 时间:2024/06/15 18:09

我为什么这么弱?


不写题意了,主要是为了记一下欧拉函数。

x的欧拉函数指小于等于x的和x互质的整数个数。

它有一个性质

φ(x)=x(1-1/p1)(1-1/p2)(1-1/p3)(1-1/p4)…..(1-1/pn)

pi为x的第i个质因数。

本来求欧拉函数的时间复杂度,比较高,用这个以后可以快一点,

代码如下:

#include<iostream>#include<cstdio>#include<cstring>#include<string>#include<cmath>using namespace std;int euler(int x){int ret=x;for(int i=2;i<=sqrt((double)x);++i){if(x%i==0)ret=ret*(i-1)/i;while(x%i==0)x/=i;}if(x>1)ret=ret*(x-1)/x;return ret;}int main(){int cs;scanf("%d",&cs);for(int CS=1;CS<=cs;++CS){int n;scanf("%d",&n);int ans=0;for(int i=2;i<=n;++i)ans+=euler(i);ans=ans*2+3;printf("%d %d %d\n",CS,n,ans);}return 0;}


0 0