102. Coprimes
time limit per test: 0.25 sec.
memory limit per test: 4096 KB
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
因为数据量比较小,所以gcd暴力也是可以过的
当然用欧拉函数更是可以
#include <iostream>
using namespace std ;
const int Maxn = 1e4 + 10 ;
int a[Maxn] ;
void init(){
a[1] = 1 ;
for (int i = 2; i < Maxn; i++){
a[i] = i ;
}
for (int i = 2; i < Maxn; i++){
if (a[i] == i){
for (int j = i; j < Maxn; j += i){
a[j] = a[j] / i * (i - 1) ;
}
}
}
}
int main (){
int n ;
init() ;
cin >> n ;
cout << a[n] ;
return 0 ;
}