PTA浙大《C语言程序设计》习题4-7最大公约数和最小公倍数

习题4-7 最大公约数和最小公倍数 (15 分)

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

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

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

输入样例:
511 292
输出样例:
73 2044

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <math.h>
/*计算方法:
最大公约数:
定义一个变量n 
输入两个值,比较大小,用大的数取余小的数 a=max;b=min;a%b 
判断取余是否为零,若为零,则max=小的数。
若不为零,
取余数 
n=min; 依次往前挪位,a=原本的b,b=余数 (循环) 

 
最小公倍数: 
两因数相乘除以最大公因数 
*/  

int main()
{
	int gy=0,gb=0,a,t,b;
	int x,y;
	 
	scanf("%d %d",&x,&y) ;
	a=x;b=y;
	 if(a<b){
	 	t=b;
	 	b=a;
	 	a=t;
	 }
	 //计算最大公约数
		if(a%b==0)
		 {
	 		gy=b,gb=a;
		 }else{
		 
	 	while (a%b!=0){
	 		t=a%b;
	 		a=b;
			b=t;
			
		 }
		 gy=b;	
	 	}
	//计算最小公倍数
	a=x;b=y;
	 if(a%b==0)
		 {
	 		gb=a;
		 }else{
		 	
		 	gb=a*b/gy;
		 
	 	}

	
	printf("%d %d",gy,gb); 
	return 0;

}
 

版权声明:本文为m0_56566228原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。