#include<stdio.h>
int maxyue(int a,int b)
{
	int c;
	while(b!=0)
	{
	c=a%b;
	a=b;
	b=c;
	}
	return a;
}
int maxbei(int a,int b)
{
	int s;
	s=a/maxyue(a,b)*b/maxyue(a,b)*maxyue(a,b);
	return s;
}
int main()
{
	int a,b,s,n;
	scanf("%d%d",&a,&b);
	s=maxyue(a,b);
	n=maxbei(a,b);
	printf("%d ",s);
	printf("%d",n);
	return 0;
}


点赞(21)
 

0.0分

0 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 6 条评论

史努比 6年前 回复TA
#include<stdio.h>
//求最大公约数
int fun1(int a,int b)
{
	int i,j;
	for(i=((a<b)?a:b);i>0;i--)
	{
		if(a%i == 0&&b%i == 0)
		return i;
	}
}
//求最小公倍数由
int fun2(int a,int b)
{
	int i,j,c;
	c = fun1(a,b);//将fun1返回的最大公约数赋给c
	return j=a*b/c;
	
}
int main()
{
	int a,b;
	int m,n;//m为最大公约数,n为最小公倍数
	scanf("%d%d",&a,&b);
	m=fun1(a,b);
	n=fun2(a,b);
	printf("最大公约数=%d \n最小公倍数=%d\n",m,n);
	return 0;
}
昵称 6年前 回复TA
学长威武
滑稽先森 6年前 回复TA
为什么第十六行要那样写?为什么不直接用ab除以最大公约数?求解。。。
c175565011 6年前 回复TA
@liliang43 去整取余
陈先生 6年前 回复TA
@liliang43 辗转相除法是这样的
liliang43 6年前 回复TA
c=a%b
不知道这里取余有什么意义。