#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, 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; }
#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-29 09:45:48 |
#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; }
#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; }有没有大佬知道这个哪里错了啊
#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); } }
#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; } 辗转相除法