求最大公约数 辗转相余法
求两数的最大公约数,名义上是辗转相除,其实就是取余
迭代关系为m,n两数 m%n看余数是不是0,如果不是0,m=n;n=r;
如果r=0;此时的n就为最大公约数
完整代码:
#include <stdio.h> //最大公约数
int main()
{
int m = 18;
int n = 24;
int r = 0;
while (r = m % n)
{
m = n;
n = r;
}
printf("%d\n", n);
return 0;
}
最小公倍数
对于正整数a,正整数b,假设他们的正整数最小公倍数是m
则m/a = i ,因为m为最小公倍数,所以i为1,2,3、、、、这些数字,也就是商。
m=a*i;
再用a*i %b i = 1 i++;
如果a*i %b ==0;
则此时a*i为最小公倍数;
完整代码
#include <stdio.h>
int main()
{
int a, b;
scanf("%d %d", &a, &b);
int i =1;
while(a*i % b != 0)
{
i++;
}
printf("%d",a*i);
return 0;
}
定理:
最小公倍数X最大公约数=aXb
如果忘记一个,直接算出另一个,用axb一除 ,就算出来了