[c++]求两个正整数的最大公约数
2017-03-22 09:05
225 查看
使用了三种算法(辗转相除法、辗转相减法、穷举法)
程序的算法部分使用了递归,这样程序会看起来更简练一些。
在使用递归的时候也遇到了一些问题,不过好在已经都解决了。
代码如下:
程序的算法部分使用了递归,这样程序会看起来更简练一些。
在使用递归的时候也遇到了一些问题,不过好在已经都解决了。
代码如下:
//创建时间:2017年3月18日 //主要功能:用辗转相除法、辗转相减法、穷举法求两个整数的最大公约数 #include "stdafx.h" #include "iostream" using namespace std; int a, b;//存输入的两个整数 //辗转相除法 int GCD1(int x, int y) { if (x%y == 0) cout << "最大公约数为:" << y << endl; else return GCD1(y, x%y);//递归 } //辗转相减法 int GCD2(int x, int y) { if (x >= y) { if (x - y == 0) cout << "最大公约数是:" << y; else return GCD2(y, x - y);//递归 } if (x < y) return GCD2(y, x);//递归 } //穷举法 void GCD3() { int i; if (a >= b) i = b; else i = a; for (; i > 0; i--) { if (a%i == 0 && b%i == 0) { cout << "最大公约数为:" << i; break; } } } //输入并检测数据的正确性 void input() { cout << "请输入两个正整数:" << endl; cin >> a >> b; if (a <= 0 || b <= 0) { cout << "数据有误,请输入正整数" << endl; input(); } } //菜单 void menu() { int choose; cout << " *********************************************************" << endl; cout << " # #" << endl; cout << " # 求最大公约数 #" << endl; cout << " # #" << endl; cout << " *********************************************************" << endl; cout << " # #" << endl; cout << " # 1.辗转相除法 2.辗转相减法 3.穷举法 #" << endl; cout << " # #" << endl; cout << " # 4.退出程序 #" << endl; cout << " *********************************************************" << endl; while (1)//可以进行重复计算 { cout << endl << "请输入操作编号:" << endl; cin >> choose; switch (choose) { case 1: input(); if (a > b) GCD1(a, b); else GCD1(b, a); break; case 2: input(); GCD2(a,b); break; case 3: input(); GCD3(); break; case 4: return; default: cout << "请在1~4之间选择" << endl; } } } int main() { menu(); return 0; }
相关文章推荐
- 求两个正整数的最大公约数 使用c++ class编写
- 作业题,编写两个类:A和B,A创建的对象可以计算两个正整数的最大公约数,B创建的对象可以计算两个数的最小公倍数,要求:B类中有一个成员变量是A类声明的对象
- 求最大公约数。考虑两个正整数都很大的情况。
- 6-1用循环编写两个正整数的最大公约数
- 输入两个正整数a,b 求其最大公约数和最小公倍数
- C语言计算两个正整数的最大公约数与最大公倍数
- 输入两个正整数a和b,求其最大公约数和最小公倍数。
- 求两个正整数的最大公约数
- 求两个正整数之间的最大公约数
- [C++]求两正整数的最大公约数
- C语言计算两个正整数的最大公约数与最大公倍数
- 输入两个正整数a和b,求其最大公约数和最小公倍数。
- 作业:C++ 编写计算“两个整数的最大公约数”程序。
- Euclid算法-计算两个正整数的最大公约数
- 简单编程(十三)编写一个方法用于求任意两个正整数的最大公约数
- 求两个正整数的最大公约数
- 算法如功夫——C++输入两个数求它们的最大公约数
- 求两个正整数的最大公约数与最小公倍数
- 【数学】求两个正整数的最大公约数
- 编写程序,采用辗转相除法求解两个正整数的最大公约数