5-25 最大公约数和最小公倍数   (15分)

来源:互联网 发布:横道图用什么软件画 编辑:程序博客网 时间:2024/06/08 13:36

本题要求两个给定正整数的最大公约数和最小公倍数。

输入格式:

输入在一行中给出两个正整数M和N(1000)。

输出格式:

在一行中顺序输出M和N的最大公约数和最小公倍数,两数字间以1空格分隔。

输入样例:

511 292

输出样例:

73 2044

解析:学会求最大公约数(辗转相除法)和最小公倍数


#include <stdio.h>//greatest common factor 递归 int gcf_Recursion( int a, int b) {if ( a % b == 0 )return b;elsegcf_Recursion(b, a % b);}//greatest common factor 非递归int gcf_Loop ( int a, int b ) {int t;while ( t = a % b ) {a = b;b = t;}return b;}void swap ( int *a, int *b ) {int tmp = *a;*a = *b;*b = tmp;}int main () {int m, n, gcf, lcm; //least common multiplescanf("%d%d", &m, &n); if ( m < n ) swap( &m, &n );//gcf = gcf_Recursion( m, n );gcf = gcf_Loop( m, n );lcm = m * n / gcf; //最小公倍数 = 两数之积 / 最大公约数printf("%d %d", gcf, lcm);return 0;}





0 0
原创粉丝点击