C程序设计第五章作业3

程序员成长之旅 · 程序员成长之旅/C语言/习题(C语言程序设计)/第五章习题 · 217 字

问:

输入两个数,求其最大公约数以及最小公倍数

答:

#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、上一次的余数 除以这一次的余数。