SGU 102. Coprimes
2015-05-16 18:50
176 查看
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
代码
Mark:
1.这里使用了欧几里德算法来求最大公约数;用欧拉函数直接求结果,可能会更快。
2.开始时,把count初值设为0,然后从1开始判断,这样使得1的结果为0,不符合题目中的定义;后来把count设置为1,然后从2开始判断,AC了。
原来的方法也可以,但是应该把 i < n 改为 i <= n 。
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 。
相关文章推荐
- Sgu 102. Coprimes
- [SGU]102. Coprimes
- sgu102:Coprimes
- 【网络流】 SGU 194 Reactor Cooling 无源无汇上下界可行流(裸题)
- SGU 191.Exhibition(模拟)
- SGU 552 Database optimization
- SGU 200.Cracking RSA(高斯消元)
- SGU 495. Kids and Prizes
- [置顶] SGU 一道一道来吧
- sgu105
- sgu184:Patties
- sgu149:Computer Network
- SGU - 105 - Div 3 (简单数学题!)
- SGU - 127 - Telephone directory (水~)
- sgu-212 Data Transmission
- SGU 121 Bridges painting
- sgu203:Hyperhuffman(哈夫曼编码)
- sgu 120 分类: sgu 2015-02-09 17:19 106人阅读 评论(0) 收藏
- SGU 495
- SGU102 Coprimes