欧拉函数求个数
时间复杂度 O(sqrt(n))
ll eular(ll n){ ll ret=1,i; for (i=2;i*i<=n;i++) if (n%i==0){ n/=i,ret*=i-1; while (n%i==0) n/=i,ret*=i; } if (n>1) ret*=n-1; return ret; }
欧拉函数求个数
时间复杂度 O(sqrt(n))
ll eular(ll n){ ll ret=1,i; for (i=2;i*i<=n;i++) if (n%i==0){ n/=i,ret*=i-1; while (n%i==0) n/=i,ret*=i; } if (n>1) ret*=n-1; return ret; }
相关文章: