辗转相除法(欧几里德法)求两个数的最大公约数和最小公倍数
2012-03-09 21:56
211 查看
辗转相除法的原理:
1. 若 r 是 a ÷ b 的余数,则gcd(a,b) = gcd(b,r);
2. a 和其倍数之最大公因子为 a;
3.最小公倍数是两数之积除以最大公约数。
另一种写法:
1. 若 r 是 a ÷ b 的余数,则gcd(a,b) = gcd(b,r);
2. a 和其倍数之最大公因子为 a;
3.最小公倍数是两数之积除以最大公约数。
#include<iostream> using namespace std; int gcd(int,int); int lcm(int,int); int main(){ int a,b; cout<<"请输入两个数:"<<endl; cin>>a>>b; cout<<endl; cout<<"最大公约数是"<<gcd(a,b)<<endl; cout<<"最小公倍数是"<<lcm(a,b)<<endl; } int gcd(int a,int b){ if(b==0||a==0){ cout<<"输入错误"<<endl;; exit(0); } if(a%b==0) return b; //利用了递归的有关知识 return gcd(b,a%b); } int lcm(int a,int b){ return(a*b)/gcd(a,b); }
另一种写法:
#include<iostream> using namespace std; int main() {int a,b,num1,num2,temp; cin>>num1>>num2; if(num1>num2) { temp=num1; num1=num2; num2=temp; } a=num1;b=num2; while(b!=0) { temp=a%b; a=b; b=temp; } cout<<"最大公约数:"a<<endl<<"最小公倍数:"<<num1*num2/a; }
相关文章推荐
- C++中用辗转相除法求两个数的最大公约数和最小公倍数
- 辗转相除法求两个数的最大公约数和最小公倍数
- 两个数的最大公约数和最小公倍数(利用辗转相除法)
- 辗转相除法求两个数的最大公约数和最小公倍数
- C/C++辗转相除法 --- 求两个数的最大公约数和最小公倍数
- 初学python:辗转相除法求两个数的最大公约数和最小公倍数
- 用辗转相除法求两个数的最大公约数和最小公倍数(什么是辗转相除法,讲解)(C++语言)
- 辗转相除法求最小公倍数及最大公约数(C++)
- [Java]练习题006: 求两个数的最大公约数和最小公倍数
- 两个数的最大公约数与最小公倍数
- 辗转相除法求最大公约数和最小公倍数
- //防止数据溢出先除再乘//辗转相除法求最大公约数最小公倍数------一I
- 辗转相除法求最大公约数、最小公倍数
- c语言求两个数的最大公约数和最小公倍数
- Javascript基础_07基础应用:求线性函数值、求奇数偶数和、求水仙花数、利用辗转相除法求最大公约数和最小公倍数、求某一年的日期为第几天
- 辗转相除法求最大公约数,最小公倍数。
- 辗转相除法求最大公约数和最小公倍数
- 更相损减法和辗转相除法 求最大公约数和最小公倍数(C语言)
- 求两个数的最大公约数与最小公倍数
- C语言求两个数的最大公约数和最小公倍数