莫憾生


私信TA

用户名:Echo00

访问量:2235

签 名:

等  级
排  名 16809
经  验 790
参赛次数 0
文章发表 4
年  龄 0
在职情况 学生
学  校 合肥工业大学
专  业

  自我简介:

先求出最小公约数,a和b的最小值min一定大于最小公约数,将i从一加到min-1,在枚举中i的最小值即为最小公约数
同时我们知道,最大公约数等于(a*b)/最小公约数=最大公倍数


注意事项:(a*b)/最小公约数=最大公倍数

参考代码:

#include<stdio.h>
int main()
{
	int a,b;
	int min;
	
	scanf("%d %d", &a, &b);
	if ( a<b ) {               //求出min
		min = a;
	} else {
		min = b;
	}
	int ret = 0;
	int i;
	for ( i = 1; i < min; i++ ) { //遍历从1到min-1      
		if ( a%i == 0 ) {
			if ( b%i == 0 ) {
				ret = i;
			}
		}
	}
	printf("%d\n", ret);//最小公约数 
	printf("%d\n",(a*b)/ret) ;//最小公倍数 
	
	return 0;
}
#include<stdio.h>
int main()
{
	int a,b;
	int min;
	
	scanf("%d %d", &a, &b);
	min=(a<b)?a:b;
	int ret = 0;
	int i;
	for ( i = 1; i < min; i++ ) {     

		if ( a%i == 0 ) {
			if ( b%i == 0 ) {
				ret = i;
			}
		}
	}
	printf("%d\n", ret);//最小公约数 
	printf("%d\n",(a*b)/ret) ;//最小公倍数 
	
	return 0;
}


 

0.0分

1 人评分

  评论区

错了吧,那个for ( i = 1; i < min; i++ )应该是i<=min
2021-03-28 15:01:58
  • «
  • 1
  • »