点赞(6)
 

0.0分

21 人评分

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

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

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

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

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

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

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

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

评论列表 共有 18 条评论

小雨 5年前 回复TA
为啥你们的都那么复杂
#include<stdio.h>
int main()
{
    int a,b;
    scanf("%d%d",&a,&b);
    int i=(a<b?a:b);   \\取两数字中小的一个为赋给i;
    for(;i>1;i--)
    {
        if(a%i==0&&b%i==0)   \\因为最大公约数肯定不会超过两数字中最小的一个,所以a,b除i,都满足整除就不用再循环了
            break;
    }
    printf("%d %d\n",i,a*b/i);
    return 0;
}
zdw 5年前 回复TA
@少侠 一看就是错了,没考虑负数
少侠 5年前 回复TA
int main(int argc, char *argv[]) {
	int a,b,i,j;
	scanf("%d%d",&a,&b);
	j=a*b;
	 a=j/(a>b?a:b);		//a用于存放小的数 
	 b=j/a;
	 for(i=a;i>=1;i--)
	 {
	 	if(a%i==0&&b%i==0)
	 	break;
	  } 
	  printf("最大公因数为%d\n",i);
	  printf("最小公倍数为%d\n",j/i);
	  
	return 0;
}
//最大公因数从最大的开始找可能会更简单一点
赵老师好凶 5年前 回复TA
将下面老哥的代码改了一下。(顺序还有一些小方面)
#include<stdio.h>
int a, b, c, d, i;
int gys(int a, int b);
int gbs(int a, int b);
int main()
{
	scanf("%d %d", &a, &b);
	d = gbs(a, b);
	c = gys(a, b);
	printf("%d %d", c, d);
	return 0;
}
int gys(int a, int b)
{
	 c = a < b ? a : b;
	for ( i = c; i > 0; i--)
	{
		if (a % i == 0 && b % i == 0)
		{
			break;
		}
	}
	return i;
}
int gbs(int a, int b)
{
	int c = (a * b) / gys(a, b);
	return c;
}
赵老师好凶 5年前 回复TA
你参考一下我的,然后我把你的改了一下。
赵老师好凶 5年前 回复TA
#include<stdio.h>
#include<string.h>
int a,b,c,d,e;
int fun(int a, int b)
{
	while (b != 0)
	{
		e = a % b;
		a = b;
		b = e;
	}
	return a;
}
int solo(int a, int b)
{
	c = a;
	d = b;
	e = (c * d) / fun(a, b);
	return e;
}
int main()
{
	scanf("%d%d", &a, &b);
	//solo(a,b);
	printf("%d %d\n", fun(a,b),solo(a,b));
	return 0;
}
zdw 5年前 回复TA
@未来 你没有考虑到负数的时候,当有负数时gys就会陷入死循环
未来 5年前 回复TA
#include<stdio.h>
int gys(int a,int b);
int gbs(int a,int b);
int main()
{
	int a,b,c,d;
	scanf("%d %d",&a,&b);
    c=gys(a,b);
    d=gbs(a,b);
	printf("%d %d",c,d);
	return 0;
} 
int gys(int a,int b)
{
	int c=a<b?a:b,i;
	for(int i=c;i>0;i--)
	{
		if(a%i==0 && b%i==0)
		{break;}
    }
    return i;
}
int gbs(int a,int b)
{
	int c=a*b/gys(a,b);
	return c;
}
为什么错了啊?