原题链接:[编程入门]最大公约数与最小公倍数
#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 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
#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; }#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; } } 上面只是求最小公倍数,问为什么错了啊?#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); } } 快帮我看看哪里错了,它说答案错误,没看出来那个答案错了#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; }