#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 人评分
#include<stdio.h> int main(){ int m,n,j,t; scanf("%d %d",&m,&n); if(m>n){ t=n; }else if(m<=n){ t=m; } for(int i=1;i<=t;i++){ if(m%i==0&&n%i==0){ j=i; } } printf("%d %d\n",j,n*m); return 0; } 真不知道哪错了...
#include<stdio.h> int main() { int a, b,c; scanf("%d%d", &a, &b); if (a>b) { c=a; a = b; b = c; } for (int i = a; i >=1 ; i--) { if (a%i==0 && b%i==0) { printf("%d ", i); break; } } for (int i1 = 1; i1 <=a*b; i1++) { if (b*i1%a == 0 ) { printf("%d", i1*b); break; } } }
#include <stdio.h> int main() { int m,n,gy,gb,cj; scanf("%d %d",&m,&n); cj=m*n; while(gy) { gy=m%n; m=n; n=gy; } gb=cj/m; printf("%d %d\n",m,gb); return 0; } 请问为什么我用5,7在VC上测试答案是1和35 但我提交时显示答案错误呢 郁闷了很久,求教
神鬼一刀流 2019-08-28 16:46:44 |
改while循环为do...while循环试试
i=(a>b?b:a)这样不会更好吗
圣者psy素爱 2019-09-27 11:33:02 |
根本不用去a,b里面的最大或者最小值,好吗。随便选一个都可以,选小的只是减少计算机的计算量,没有必要
#include <stdio.h> int main() { int x,y,t; printf("请输入两个整数,求其公约数\n"); scanf("%d %d",&x,&y); if(x<y) //max=x;min=y { t=x; x=y; y=t; } for(t=y;t>0;t--) //输入的是正整数,所以循环会一直成立 ,t取到1循环一定成立 { if(y%t==0&&x%t==0) {break; } } int z=y; //存放最小公约数 for(;z>0;z++) { if(z%x==0&&z%y==0) { break; } } printf("%d %d\n",t,z); return 0; }
#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; } } 上面只是求最小公倍数,问为什么错了啊?
zjnmbiss 2019-11-21 13:52:05 |
最小公倍数不等于两个数相乘吧 好像等于两个数相乘除以最小公约数吧