1、求两个数的最大公约数
1.1 普通实现方法
#include<stdio.h>
int main()
{
int a = 0;
int b = 0;
scanf("%d %d", &a, &b);
int m = 0;
//找出最小值
m = (a > b ? b : a);
//假设m为最大公约数
while (1)
{
if (a % m == 0 && b % m == 0)
{
break;
}
m--;
}
printf("%d\n", m);
return 0;
}
1.2 优化后的方法 “辗转相除法”
#include<stdio.h>
int main()
{
int a = 0;
int b = 0;
scanf("%d %d", &a, &b);
int m = 0;
while (m=a % b)
{
a = b;
b = m;
}
printf("%d\n", b);
return 0;
}
2、求两个数的最小公倍数
2.1 普通实现方法
#include<stdio.h>
int main()
{
int a = 0;
int b = 0;
scanf("%d %d", &a, &b);
int m = 0;
m = (a > b ? a : b);
while (1)
{
if (m % a == 0 && m % b == 0)
{
break;
}
m++;
}
printf("%d\n", m);
return 0;
}
2.2 优化后的方法
假如m为a和b的最大公约数,则a和b的最小公倍数为 a*b/m
#include<stdio.h>
int main()
{
int a = 0;
int b = 0;
scanf("%d %d", &a, &b);
int m = 0;
int n = 0;
n = a * b;
while (m = a % b)
{
a = b;
b = m;
}
printf("%d\n", n/b);
return 0;
}