标签:
Description
Input
Output
Sample Input
2 3 4 5 0
Sample Output
1 3 5 9
题意:给定一个数n,求小于或等于n的数中两两互质组成的真分数的个数。
思路:这个博客有关于这道题的推理---->点击打开链接
#include <stdio.h> #include <math.h> #include <string.h> #include <stdlib.h> #include <iostream> #include <sstream> #include <algorithm> #include <set> #include <queue> #include <stack> #include <map> using namespace std; typedef long long LL; const int inf=0x3f3f3f3f; const double pi= acos(-1.0); LL phi[1000010]; LL res[1000010]; void Euler() { int i,j; memset(phi,0,sizeof(phi)); phi[1]=1; for(i=2;i<=1000010;i++) { if(!phi[i]) { for(j=i;j<=1000010;j+=i) { if(!phi[j]) phi[j]=j; phi[j]=phi[j]/i*(i-1); } } } } int main() { int n; Euler(); memset(res,0,sizeof(res)); res[1]=res[2]=1; for(int i=3;i<1000010;i++) res[i]=res[i-1]+phi[i]; while(~scanf("%d",&n)){ if(!n) break; printf("%lld\n",res[n]); } return 0; }
POJ 2478-Farey Sequence(筛选法求欧拉函数)
标签:
原文地址:http://blog.csdn.net/u013486414/article/details/44946023