C程序设计第五章作业3
目录:程序员成长之旅/C语言/习题(C语言程序设计)/第五章习题
问:
输入两个数,求其最大公约数以及最小公倍数
答:
#include<stdio.h>
int main()
{
int Num1 = 0, Num2 = 0, small = 0, large = 0, p = 0, n = 0;
printf("Enter number(Number1,Number2):\n");
scanf("%d,%d", &Num1, &Num2);
if (Num1 > 0 && Num2 > 0)
{
if (Num2 > Num1)//确定谁更大一些
{
small = Num1;
large = Num2;
}
else
{
small = Num2;
large = Num1;
}
p = large * small;//为以后计算做准备
while (small != 0)//首先,small肯定不是0 才能运行第一次 ,第二次运行的时候意义就改变了。
{
n = large % small;//核心算法
large = small;//核心算法
small = n;//核心算法
}
printf("Greatest common divisor is [%d]\n", large);
printf("Minimum common multiple is [%d}\n", p / large);
}
else
{
setbuf(stdin, NULL);
printf("You enter data is error!\n");
return 0;
}
}
核心算法说明:
1、先最大除以最小 取得其余数。
2、输入数字较小的数字 除步骤1 的余数。
3、上一次的余数 除以这一次的余数。