#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 条评论

12画 5年前 回复TA
#include<stdio.h>
int a,b,c,d; 
int gcd(int a,int b)
{
	if(b==0)
	{
		return a;
	}
	return gcd(b,a%b);
}
main()
{
	scanf("%d%d",&a,&b);
	c=gcd(a,b);
	d=a*b/gcd(a,b);
	printf("%d %d",c,d);


	
}
柏木英理 6年前 回复TA
a>b?a:b改成a<b?a:b效率会更高。
李海阔 6年前 回复TA
#include <stdio.h>
int main()
{
	int m, n, b;
	scanf("%d%d", &m, &n);
	for (int a = m*n; a > 0; a--) {
		if (m%a == 0 && n%a == 0) {
			b = m*n / a;
			printf("%d %d", a, b);
			break;
		}	
	}
			return 0;
}
李海阔 6年前 回复TA
@李海阔 #include <stdio.h> int main() { 	int m, n, b; 	scanf("%d%d", &m, &n); 	for (int a = m*n; a > 0; a--) { 		if (m%a == 0 && n%a == 0) { 			b = m*n / a; 			printf("%d %d", a, b); 			break; 		}	 	} 			return 0; }
李海阔 6年前 回复TA
#include<stdio.h>
int main()
{
	int m, n, c;
	scanf("%d%d", &m, &n);
	for (int i=1; 0<i<=m*n; i++)
	{
		if (m % i == 0 && n %i == 0) {
			c = m*n;
			printf("%d %d\n", i, c);
		}
	}
	
	return 0;
}
李傲龍 6年前 回复TA
@李傲龍 节省一点时间
李傲龍 6年前 回复TA
而且,因为公约数不会大于这两个值,所以可以从较小值开始,将a>b?a:b改为a<b?a:b
李傲龍 6年前 回复TA
说错了呀,是最大公约数
居夫人 6年前 回复TA
#include<stdio.h>
int main()
{
    int a,b,i=0,max;
    scanf("%d%d", &a, &b);
    max=a;
    if(max<b)
    max=b;
    do{
    i++;}while(a%i!=0||b%i!=0);
    printf("%d ",i);
    do{
        max++;
    }while(max%a!=0||max%b!=0);
    printf("%d\n",j);
    return 0;
}有没有大佬知道这个哪里错了啊
落单的石头 6年前 回复TA
#include <stdio.h>
#include <stdlib.h>
short gcd(short,short);
int main()
{
    short a,b;
    scanf("%hd %hd",&a,&b);
    printf("%hd %hd",gcd(a,b),a*b/gcd(a,b));
    return 0;
}
short gcd(short a,short b)
{
    if(a == b)
        return a;
    if(a < b)
        return gcd(b,a);
    else
    {
        if(!a&1 && !b&1)
            return gcd(a>>1,b>>1) << 1;
        else if(!a&1 && b&1)
            return gcd(a>>1,b);
        else if(a&1 && !b&1)
            return gcd(a,b>>1);
        else
            return gcd(b,a-b);
    }
}