欧几里德算法求最大公约数
2015-01-19 14:56
232 查看
1.例题
公约数和公倍数
时间限制:1000 ms | 内存限制:65535 KB难度:1
描述小明被一个问题给难住了,现在需要你帮帮忙。问题是:给出两个正整数,求出它们的最大公约数和最小公倍数。
输入第一行输入一个整数n(0<n<=10000),表示有n组测试数据;
随后的n行输入两个整数i,j(0<i,j<=32767)。
输出输出每组测试数据的最大公约数和最小公倍数
样例输入
3 6 6 12 11 33 22
样例输出
6 6 1 132 11 66
2.代码
#include <iostream> #include <cstdio> #include <cmath> using namespace std; int gys(int a, int b) { if(b > a) { int temp; temp = a; a = b; b = temp; } while(a % b != 0) { int temp; a = a % b; temp = a; a = b; b = temp; } return b; } int main() { int n,a,b,c; cin>>n; while(n--) { cin>>a>>b; c = gys(a,b); cout<<c<<" "; cout<<a * b / c<<endl; } return 0; }
3.欧几里德算法求最大公约数的递归和非递归实现
#include <iostream> #include <cstdio> #include <stack> using namespace std; //递归实现 int gcd1(int m,int n) { if (m < n) { int tmp = m; m = n; n = tmp; } if (n == 0) return m; else return gcd1(n,m % n); } //非递归实现 int gcd2(int m,int n) { if (m < n) { int tmp = m; m = n; n = tmp; } if (n == 0) return m; while (n > 0) { int tmp = m % n; m = n; n = tmp; } return m; } int main() { cout<<gcd1(100,3)<<endl; cout<<gcd2(100,3)<<endl; return 0; }
4.小应用
小珂的苦恼
时间限制:1000 ms | 内存限制:1000 KB难度:2
描述小珂是一名初中生,她现在很苦恼,因为老师布置了一个让她苦恼的作业,你能不能帮助她呢?题目信息如下。 已知二元一次方程 a*x+b*y=n, 判断这个二元一次方程有没有整数解,x,y为未知数,其中a,b,n都为整数且不等于零,同时满足0<a,b,n<2^16-1。
输入第一行有一个整数0<n<=1000000表示有 n组测试数据,接下来的每一行有三个整数分别是a,b,n
输出存在整数x和y使得方程有解,输出“Yes”,否则输出“No”
样例输入
2 2 4 2 3 9 7
样例输出
Yes No
#include <cstdio> #include<iostream> using namespace std; int main() { int m,a,b,n; scanf("%d",&m); while(m--) { scanf("%d%d%d",&a,&b,&n); int temp; if(a < b) { temp = a; a = b; b = temp; } while(a % b != 0) { temp = a % b; a = b; b = temp; } if(n % b == 0) printf("Yes\n"); else printf("No\n"); } return 0; }
相关文章推荐
- 最大公约数与欧几里德算法
- 欧几里德算法(辗转相处算法:最大公约数算法)
- 最大公约数算法——欧几里德算法
- 求2个数的最大公约数--欧几里德算法
- 欧几里德算法求最大公约数
- 欧几里德算法——最大公约数
- 最大公约数的欧几里德算法
- 最大公约数与欧几里德算法
- 最大公约数-----欧几里德算法
- 求两个整数最大公约数的欧几里德算法和求幂运算程序
- 欧几里德算法求最大公约数
- 求最大公约数-辗转相除法-欧几里德算法
- 欧几里德算法求最大公约数
- 欧几里德算法(最大公约数算法)
- 欧几里德算法(最大公约数)
- 求最大公约数--欧几里德算法 及 最小公倍数
- 欧几里德算法求最大公约数
- 欧几里德算法(辗转相除法):求两个整数最大公约数
- 欧几里德算法求最大公约数 - Ruby
- 欧几里德算法 -- 求最大公约数