SGU 102. Coprimes

来源:互联网 发布:知乎咖啡的好处与坏处 编辑:程序博客网 时间:2024/05/22 12:57

Question:

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 <cstdlib>using namespace std;int main(int argc, char *argv[]){int n, count = 1;cin >> n;for (int i = 2; i < n; i ++){int a = n, b = i, r;while (1)//欧几里德算法(辗转相除法)求最大公约数{r = a % b;if (r == 0){if (b == 1) count ++;break;}a = b;b = r;}}cout << count << endl;return EXIT_SUCCESS;}

Mark:

1.这里使用了欧几里德算法来求最大公约数;用欧拉函数直接求结果,可能会更快。

2.开始时,把count初值设为0,然后从1开始判断,这样使得1的结果为0,不符合题目中的定义;后来把count设置为1,然后从2开始判断,AC了。

   原来的方法也可以,但是应该把 i < n 改为 i <= n 。

0 0
原创粉丝点击