#include<stdio.h>
int main()
{
    int a,b,i,j;//i最大公约数,j最小公倍数 
    scanf("%d %d",&a,&b);
    for (i=(a>b?a:b);i>0;i--){
        if (a%i==0&&b%i==0){
            j=a*b/i;
            printf("%d %d\n",i,j);
            break;    
        }
    }
    return 0;
}

最大公倍数值不会大于a,b最大值;

两个数都能整除它;

最小公倍数等于a*b除以最大公约。

有结果就需要返回,使用break;

点赞(194)
 

0.0分

16 人评分

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

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

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

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

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

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

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

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

评论列表 共有 68 条评论

灵珂 5年前 回复TA
int main()
{
	int m, n;
	scanf("%d%d", &m, &n);
	for (unsigned y = m; y >= 1; y--) {
		if (m%y == 0 && n%y == 0) {
			printf("%d", y);
		}
	}
	for (unsigned x = m; x <= n * m; x++) {
		if (x%m == 0 && x%n == 0) {
			printf("%d", x);
		}
	}
	return 0;
}
为啥我这样不行,哭了。
打扰了 5年前 回复TA
@打扰了 @as1574715287 (⊙﹏⊙)哈哈哈哈哈哈哈哈哈哈我好蠢
as 5年前 回复TA
@打扰了 6是最大公约数,12是最小公倍数 没错~
打扰了 5年前 回复TA
为啥输6 12的输出是6 12?
(⊙﹏⊙)
一叶知秋 5年前 回复TA
#include <stdio.h>
int main()
{
  int a,b;
  int factor;//假设a和b的最大公约数为factor;
  int multiple;//假设a和b的最小公倍数为multiple;
  int i=1;
  scanf("%d %d",&a,&b);
  for(i=1 ; i<=a;i++ ){
    if(a%i== 0 && b%i==0){
      factor =i;
    }
  };
  multiple=(a*b)/factor;
  printf("%d %d",factor,multiple);
  
  return 0;
}
一叶知秋 5年前 回复TA
@初学者 你这是求得最小公约数呀,判定条件错了
逻辑幻象 5年前 回复TA
@初学者 最大公因数  不应该从1开始
初学者 5年前 回复TA
@初学者 我知道了,公约数求错了
初学者 5年前 回复TA
#include<stdio.h>
int main()
{
	int m,n;
	scanf("%d%d",&m,&n);
	int t;
	t=1;
	while(t>0)
	{
		if(m%t==0&&n%t==0)
		break;
		t++;
	}
	int d;
	d=1;
	while(d>0)
	{
		if(d%m==0&&d%n==0)
			break;
		d++;
	}
	printf("%d %d\n",t,d);
	return 0;
}
上机运算是对的,但就是过不了是为什么?
镜牙 5年前 回复TA
#include <stdio.h>
void swa(int *x,int *y)//使m>n
{
	int *temp;
	if (*x<*y)
	{
   
	  temp=x;
	  x=y;
	  y=temp;
	  
	}
}

void max_commer_diviser(int *x,int *y)//求最大公约数
{
  int max,i,min;
  for (i=*y;i>0;i--)
  {
  	if (*x%i==0&&*y%i==0)
  	{
	  	max=i;
	  	break ;
	  	} 
	  	
	 
  }
  min=(*x)*(*y)/max;
  printf ("%d %d\n",max,min);
   
}	





int main()
{   
	int m,n;
	scanf ("%d%d",&m,&n);
	swa (&m,&n);
	max_commer_diviser(&m,&n);

	return 0;
	
}