随笔分类 -  欧拉函数

摘要:#include<stdio.h>#include<string.h>#include<math.h>#define LL long long#define nmax 3000001int prime[nmax], phi[nmax];int plen;void init() { int i, j; memset(phi, 0, sizeof(phi)); for (i = 2, plen = 0; i < nmax; i++) { if (!phi[i]) { phi[i]... 阅读全文
posted @ 2011-10-11 21:02 qingyezhu 阅读(192) 评论(0) 推荐(0)
摘要:题目思路:求解10^x = 1 (mod 9*L/gcd(L,8))的满足x>0的最小解就是答案由8构成的数A设有x位那么A=8(10^0+10^1+...+10^(x-1));很容易得到A=(8/9)*(10^x-1);题目的要求就是A=0(mod L)就是(8/9)*(10^x-1)=0(mod L);->8*(10^x-1)=0(mod 9L);->10^x-1=0(mod 9L/gcd(L,8));->10^x =1 (mod 9L/gcd(L,8));令p=9*L/gcd(L,i), 等价于10^x==1(mod p),求满足条件的最小的整数x看到这个式子,我 阅读全文
posted @ 2011-09-09 19:21 qingyezhu 阅读(423) 评论(0) 推荐(0)
摘要:由题知:g(n)=sigma{phi(n/d)*n/d},d|nf(n)=(g(n)+1)/2由于欧拉函数的积性,phi(n*m)=phi(n)*phi(m),gcd(n,m)=1所以,n=pi(pi^ci)故g(n)=g(pi(pi^ci))。g(n)=pi(g(pi^ci)g(pi^ci)=sigma(phi(pi^ci)pi^ci)而对于phi(pi^ci)(pi-1)*(pi^(ci-1)至此就这题就解决了!我的代码:超时的代码:LL sumlcm(int n) { int te = 0, temp = n; LL sum = 0; if (n == 1) ... 阅读全文
posted @ 2011-07-29 17:16 qingyezhu 阅读(174) 评论(0) 推荐(0)
摘要:做法:直接求过不了只能考虑 对于gcd(M,N)=i 有Ci个M满足此式 答案便是∑(Ci*i)gcd(M,N)=i <=> gcd(M/i,N/i)=1 而求gcd(M/i,N/i)=1 有多少个M/i满足 这便是欧拉函数Phi()的定义所以就转化为了求Phi(N/i)枚举每个 M|N 求出Phi(N/i) 答案便是 ∑(Phi(N/i)*i)那么如何枚举每个 M|N 呢?很简单 枚举1到sqrt(N)的所有整数,所有的约数便是 j|N (N/j)|N这样就搞定了#include<stdio.h>#include<math.h>#include<st 阅读全文
posted @ 2011-07-28 14:15 qingyezhu 阅读(253) 评论(0) 推荐(0)