#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
@默默潜伏 main函数没有返回值;输入没有地址符;
Talog 5年前 回复TA
#include <stdio.h>

int main(void)
{ int i,m,n,Maxa,Mina;
scanf("%d %d",&m,&n);
Maxa=1;/*你好我想问为什么这里不写,即不对Maxa初始化在这里的oj上就答案错误,写了就正确,而我自己的电脑上写不写没区别呢?是有什么特殊数据吗?*/
if (m>n){
	int temp;
	temp=m;
	m=n;
	n=temp;
}
for (i=1;i<=n;i++){
	if(m%i==0 && n%i==0 && Maxa<i){
		Maxa=i;
	}
}
if(Maxa==1){
	Mina=m*n;
} else {
	Mina=m*n/Maxa;
}
printf("%d %d",Maxa,Mina);
return 0;
}
小峰 5年前 回复TA
@默默潜伏 a和b没有初始化
像风一样 5年前 回复TA
@罗万兴 看的我好晕啊!
decadelv 5年前 回复TA
@默默潜伏 没有寻址符号
默默潜伏 5年前 回复TA
#include<stdio.h>
main()
{
    int a,b,s;
    scanf("%d%d",a,b);
    for(s=1;s<=a*b;s++)
    {
        if(s%a==0&&s%b==0)
        printf("%d\n",s);
        break;
    }
}

上面只是求最小公倍数,问为什么错了啊?
默默潜伏 5年前 回复TA
#include<stdio.h>
main()
{
	int m,n,i;
	int a,b,c;
	scanf("%d %d",&m,&n);
    if(m>n){
	for(i=n;a!=0||b!=0;i--){
		a=n%i;
		b=m%i;
		c=m*n/i;
		}
	printf("%d %d",i+1,c);
	}	
	else{
		for(i=m;a!=0||b!=0;i--){
		a=m%i;
		b=n%i;
		c=m*n/i;
		}
	printf("%d %d",i+1,c);
	}
}

快帮我看看哪里错了,它说答案错误,没看出来那个答案错了
1111111111 5年前 回复TA
@灵珂 没有break,if会把所有符合要求的都打出来
罗万兴 5年前 回复TA
@罗万兴 我还没从数学里走到计算机里
罗万兴 5年前 回复TA
#include<stdio.h>
int main()
{
    int a,b,c,d,e,t;
    scanf("%d%d",&a,&b);
    c=a;
    d=b;
    if(a<b)
    {e=a;
    a=b;
    b=e;}
    do{
        t=a%b;
        a=b;
        b=t;
    }while(t!=0);
    e=c*d/a;
    printf("%d ",a);
    printf("%d\n",e);
    return 0;
}