【SGU 102】Coprimes

102. Coprimes

time limit per test: 0.5 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

   题目让求小于N且与N互质的数的个数。因为看范围貌似暴力就可以,所以我就写了欧拉函数(= =!)
#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;

}

你可能感兴趣的:(Prim)