雨滴在心头


私信TA

用户名:ydzxt

访问量:14554

签 名:

等  级
排  名 3697
经  验 1786
参赛次数 0
文章发表 5
年  龄 0
在职情况 学生
学  校 重庆邮电大学
专  业

  自我简介:

#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;

 

0.0分

16 人评分

看不懂代码?想转换其他语言的代码? 或者想问其他问题? 试试问问AI编程助手,随时响应你的问题:

编程语言转换

万能编程问答

代码解释器

  评论区

a>b?a:b改成a<b?a:b效率会更高。
2019-01-04 15:44:53
#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;
}
2018-12-29 09:45:58
#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;
}
2018-12-18 17:47:50
而且,因为公约数不会大于这两个值,所以可以从较小值开始,将a>b?a:b改为a<b?a:b
2018-12-13 16:14:07
说错了呀,是最大公约数
2018-12-13 16:01:07
#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;
}有没有大佬知道这个哪里错了啊
2018-11-28 07:42:04
#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);
    }
}
2018-11-25 23:33:06
#include<stdio.h>
int main()
{
    int a,b,i,j,min,max;//j最小公倍数 
    scanf("%d %d",&a,&b);
    max=(a>b?a:b);
    min=(a<b?a:b);
    while(1)
    {
    	i=max%min;
    	if(i==0)
    	break;
    	max=min;
    	min=i;
	}
	j=a*b/min;
	printf("%d %d",min,j);
    return 0;
}
辗转相除法
2018-11-13 18:12:30