最大公约数:
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;}备注:
有问题可以评论,看到后我会尽力及时回复的,谢谢!