poj2407】的更多相关文章

题目链接:https://vjudge.net/problem/POJ-2407 题意:给出n,求0..n-1中与n互质的数的个数. 思路:欧拉函数板子题,先根据唯一分解定理求出n的所有质因数p1,p2,...,pn,然后根据Φ(m)=m*∏(1-1/pi)计算即可. AC代码: #include<cstdio> using namespace std; int n,ans; int main(){ while(scanf("%d",&n),n){ ans=n; ;…
欧拉函数裸题. 欧拉函数:在数论,对正整数n,欧拉函数是少于或等于n的数中与n互质的数的数目. 欧拉函数的定义: E(N)= (  区间[1,N-1] 中与 N 互质的整数个数). 对于 积性函数 F(X*Y),当且仅当 GCD(X,Y)= 1 时, F(X*Y) = F(X)* F(Y) 任意整数可因式分解为如下形式:      其中( p1, p2 ... pk 为质数, ei 为次数 ) 所以 因为 欧拉函数 E(X)为积性函数, 所以 对于    , 我们知道 因为pi 为质数,所以 […
题目问有多少个小于n的正整数与n互质. 这个可以用容斥原理来解HDU4135.事实上这道题就是求欧拉函数$φ(n)$. $$φ(n)=n(1-1/p_1)(1-1/p_2)\dots(1-1/p_m)\tag{p为n的质因子}$$ 这个通项公式可以通过容斥原理的解法来验证.那么利用这个通项就能在$O(\sqrt[]n)$下计算出φ(n). #include<cstdio> #include<cstring> using namespace std; int phi(int n){…
题意很简单 就是欧拉函数的定义: 欧拉函数是指:对于一个正整数n,小于n且和n互质的正整数(包括1)的个数,记作φ(n) .题目求的就是φ(n) 根据 通式:φ(x)=x*(1-1/p1)*(1-1/p2)*(1-1/p3)*(1-1/p4)…..(1-1/pn),其中p1, p2……pn为x的所有质因数,x是不为0的整数 然后利用以下性质变形: 欧拉函数是积性函数——若m,n互质,φ(mn)=φ(m)φ(n).                                  若n是质数p的k…
题目大意 给定一个正整数n,要求你求出所有小于n的正整数当中与n互质的数的个数 题解 欧拉函数模板题~~~因为n过大~~~所以直接用公式求 代码: #include<iostream> #include<cmath> #include<cstdio> using namespace std; int euler_phi(int n) { int m=(int)sqrt(n+0.5); int ans=n; ; i<=m; i++) ) { ans=ans/i*(i…
Relatives Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 13598   Accepted: 6771 Description Given n, a positive integer, how many positive integers less than n are relatively prime to n? Two integers a and b are relatively prime if ther…
sqrt(n)复杂度 欧拉函数模板 #include <iostream> #include <cstdio> #include <queue> #include <algorithm> #include <cmath> #include <cstring> #define inf 2147483647 #define N 1000010 #define p(a) putchar(a) #define For(i,a,b) for(i…
对正整数n,欧拉函数是少于或等于n的数中与n互质的数的数目.此函数以其首名研究者欧拉命名,它又称为Euler's totient function.φ函数.欧拉商数等.例如:φ(8) = 4(Phi(8) = 4),因为1,3,5,7均和8互质.   Input 输入一个数N.(2 <= N <= 10^9) Output 输出Phi(n). Input示例 8 Output示例 4 代码 #include<iostream> #include<cstring> #in…
线性筛素数(原来我之前学的不是线性的啊... void getprime(){ rep(i,2,nmax){ if(!vis[i]) prime[++prime[0]]=i; for(int j=1;j<=prime[0]&&i*prime[j]<=nmax;j++){ vis[i*prime[j]]=true; if(i%prime[j]==0) break; } } } 利用了每个合数必有一个最小素因子,每个合数仅被它的最小素因子筛去正好一次,所以是线性时间.代码中体现在:…
#include<iostream> using namespace std; //欧拉函数 int eular(int n){ ,i; ;i*i<=n;i++){ ){ n/=i;res*=i-; ){ n/=i;res*=i; } } } ) res*=n-; return res; } int main(){ int n,m,sum; cin>>n; ;i<=n;i++){ sum=; cin>>m; ;j<=m;j++) sum+=eular(…