int yin(int,int); int yin(int a,int b) { int i; for(i = a<b?a:b;a%i != 0||b%i != 0;i--); return i; } int bin(int,int,int); int bin(int a,int b,int i) { int c = a*b/i; return c; } #include "stdio.h" int main() { int a,b; scanf("%d %d",&a,&b); int i = yin(a,b); int f = bin(a,b,i); printf("%d %d",i,f); return 0; }
求个公约数咋嘛这么绕
zh #include<stdio.h> void zuida(int a,int b) { int i; if(a>b) { for(i=b-1;i<b;i--) { if(a%i==0&&b%i==0) {printf("%d\n",i); break;} } } if(a<b) { for(i=a-1;i<=a;i--) { if(a%i==0&&b%i==0) {printf("%d\n",i); break;} } } } void zuixiao(int num1,int num2) { int j; if(num1>num2) { for(j=num1;j<=num1*num2;j++) { if(j%num1==0&&j%num2==0) {printf("%d\n",j); break;} } } if(num2>num1) { for(j=num2;j<=num1*num2;j++) { if(j%num1==0&&j%num2==0) {printf("%d\n",j); break;} } } } int main (void) { int a,b; scanf("%d%d",&a,&b); zuida(a,b)
//自定义函数处理最大公约数(gcd)与最小公倍数(lcm) #include<stdio.h> int gcd=1,lcm=1; int fungcd(int a,int b) { int j,k; j=a; k=b; if(j>k) { j=b; k=a; } for(int i=2;i<=j;i++) { if(j%i==0&&k%i==0) { j/=i; k/=i; gcd*=i; i=1; } } return gcd; } int funlcm(int a,int b) { int q; q=fungcd(a,b); lcm=a*b/q; return lcm; } int main() { int a,b; scanf("%d%d",&a,&b); printf("%d %d",fungcd(a,b),funlcm(a,b)); return 0; }
实测博主你这个不太对呀,如果是8和4得到的最小公约数就是4了,你那个判断条件应该改一下。
Kohler 2021-03-28 19:48:06 |
看错了,不好意思,博主。
#include<stdio.h> int min(int a,int b){ auto int i; if(a>b) i=b; else i=a; for(;i>=1;i--) if(a%i==0&&b%i==0) //这里不得不说我没有用上面的那个方法,主要是没看懂,求最大公约数 break; return i; } int max(int a,int b){ auto int i; if(a>b) i=a; else i=b; for(;i<=a*b;i++) if(i%a==0&&i%b==0) break; return i; } int main(){ int a,b; scanf("%d %d",&a,&b); printf("%d %d\n",min(a,b),max(a,b)); return 0; }