首页 > 编程知识 正文

最大公倍数与最小公约数如何求,用辗转相减法求最大公约数的步骤

时间:2023-05-03 12:48:17 阅读:188326 作者:1130

最大公约数:
1.辗转相除法
2.辗转相减法(更相减损法)
3.穷举法

最小公倍数:两数的乘积除以最大公约数

方法:
1.判断大小,并使大数赋给a,小数赋给b;
2.辗转相除法:在两数相除余数不为0的情况下循环相除,直至余数为0并得出最大公约数
3.辗转相减法(更相减损法):两数之差不与两数任一个相等时,循环进行,递归,直至有一个数与余数相等即为最大公约数;
4.穷举法:for循环i从最小数依次减小,直至被两数同时相除余数为0,即为最大公约数;

源代码:

#include<iostream>using namespace std;void ygq(int *a,int *b)/*判断大小*/{int c;if(*a<*b){c=*a;*a=*b;*b=c;}}int ygq1(int a,int b)/*辗转相除法*/{int c=1;ygq(&a,&b);while(c!=0){c=a%b;a=b;b=c;}return a;}int ygq2(int a,int b)/*辗转相减法*//*更相减损法*/{ygq(&a,&b);while(a!=b){a=a-b;ygq(&a,&b);}return a;}int ygq3(int a,int b)/*穷举法*/{ygq(&a,&b);for(int i=b;i>=1;i--){if(a%i==0&&b%i==0){return i;break;}}return 1;}int main(){int a,b;printf("请输入两个整数:");cin>>a>>b;if(a>0&&b>0)printf("辗转相除法n最大公约数:%dn最小公倍数:%dn",ygq1(a,b),a*b/ygq1(a,b));elseprintf("Error!");if(a>0&&b>0)printf("更相减损法n最大公约数:%dn最小公倍数:%dn",ygq2(a,b),a*b/ygq2(a,b));elseprintf("Error!");if(a>0&&b>0)printf("穷举法n最大公约数:%dn最小公倍数:%dn",ygq3(a,b),a*b/ygq3(a,b));elseprintf("Error!");return 0;}

备注:
有问题可以评论,看到后我会尽力及时回复的,谢谢!

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。