目录
目录
1.求两数最大公约数
1.1 思路技巧
设两个正整数a,b(a>b),且c为a/b的余数,记作c=(a%b)
判断 c 是否 = 0 :
(1)如果 c = 0,即a能被b整除,则最大公约数 p = b(最后一次互换后的b)
(2)如果 c ! = 0,则令a=b,b=c,对新的a,b求余,再判断新的 c 是否 = 0 ,如果是则执
行(1),否则重复执行 (2) 直到 c = 0
1.2 程序代码
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main()
{
int a, b, c, t; //t作为互换a,b值的中间量
printf("请输入两个正整数:>");
scanf("%d %d", &a, &b);
int m = a * b; //设 m = 输入两数的乘积
if (a < b) //使满足 a > b的条件
{
t = a;
a = b;
b = t;
}
while (c = a % b) //判断 c 是否 = 0(c!=0则继续循环,c=0则跳出循环)
{
a = b;
b = c;
}
int p = b; //定义 p 为最大公约数
printf("最大公约数是%d", p);
return 0;
}
1.3 运行结果
2.求两数最小公倍数
2.1 思路技巧
设两个正整数a,b(a>b),且 m = a * b
用上述方法求得a,b最大公约数p,则最小公倍数 q = m / p
2.2 程序代码
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main()
{
int a, b, c, t; //t作为互换a,b值的中间量
printf("请输入两个正整数:>");
scanf("%d %d", &a, &b);
int m = a * b; //设 m = 输入两数的乘积
if (a < b) //使满足 a > b的条件
{
t = a;
a = b;
b = t;
}
while (c = a % b) //判断 c 是否 = 0(c!=0则继续循环,c=0则跳出循环)
{
a = b;
b = c;
}
int p = b; //定义 p 为最大公约数
int q = m / p; //定义 q 为最小公倍数
printf("最小公倍数是%d", q);
return 0;
}