1.求最大公约数
Ⅰ.辗转相除法
①记a%b=c;
②若c=0,那么b为最小公倍数,结束;
③若c!=0,那么a=b,b=c,然后重复第一步开始。
Ⅱ.相减法
①若a>b,则a=a-b;
②若a<b,则b=b-a;
③若a=b,则a或者b为最大公约数,结束
④若a!=b,则执行①开始。
Ⅲ.穷举法
①记c为a,b中较小的那个数;
②若a,b同时可以被c整除,那么c为最大公约数,结束。
③c--,再回去执行②。
2.最小公倍数
俩个整数的最小公倍数等于俩个数的乘积除以他们的最大公约数。
3.俩个整数交换(交换a,b的值)
Ⅰ借助第三个变量c
c=a;
a=b;
b=c;
Ⅱ不借助第三个变量
① a = a - b;
b = b + a;
a = b - a;
但是上述方法会出现溢出问题,有一定缺陷,所以我们用到以下方法
② a = a^b;
b = a^b;
a = a^b;
代码:求最大公约数代码我们用辗转相除,交换整数用异或的方法
#include<stdio.h>
#include<windows.h>
int main()
{
int a = 20;
int b = 16;
int f = 0;
int e = 0;
int c = 0;
int n = 0;
f = a;
e = b;
while(a%b)
{
c = a%b;
a = b;
b = c;
}
printf("最大公约数为:%d\n",b);
n = f*e/b;
printf("最小公倍数为:%d\n",n);
f = f^e;
e = f^e;
f = f^e;
printf("20,16俩个数交换后为:%d,%d\n",f,e);
system("pause");
return 0;
}