【SGU 102】Coprimes
102. Coprimes time limit per test: 0.5 sec. For given integer N (1<=N<=104) find amount of positive numbers not greater than N that coprime with N. Let us call two positive integers (say, A and B, for example) coprime if (and only if) their greatest common divisor is 1. (i.e. A and B are coprime iff gcd(A,B) = 1). Input Input file contains integer N. Output Write answer in output file. Sample Input 9 Sample Output 6 #include <iostream> #include <cstdio> #include <cstring> #include <cstdlib> #include <cmath> using namespace std; int n; int phi(int x){ int ans=x; for(int i=2;i<(int)sqrt(x*1.0)+1;i++) if((x%i==0)){ ans=ans/i*(i-1); while((x%i==0)) x/=i; } if(x>1) ans=ans/x*(x-1); return ans; } int main(){ scanf("%d",&n); printf("%d\n",phi(n)); return 0; } |