摘要:
做法:直接求过不了只能考虑 对于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
阅读(254)
评论(0)
推荐(0)
摘要:
#include<stdio.h>#include<string.h>#include<math.h>#define nmax 1000001int prime[nmax], plen;void init() { memset(prime, -1, sizeof(prime)); int i, j; for (i = 2; i < nmax; i++) { if (prime[i]) { for (j = i + i; j < nmax; j += i) { prime[j] = 0; } } } for (i = 2, plen = 0; i 阅读全文
posted @ 2011-07-28 11:08
qingyezhu
阅读(308)
评论(0)
推荐(0)

浙公网安备 33010602011771号