1210 - C语言8.13
时间限制 : 1 秒
内存限制 : 32 MB
写两个函数,分别求两个整数的最大公约数和最小公倍数。用主函数分别调用这两个函数,并输出结果。
题目输入
两个用空格隔开的正整数,保证二者的值均不超过10000。
题目输出
输出两个正整数的最大公约数和最小公倍数,用空格隔开。
请注意行尾输出换行。
输入/输出样例
输入格式
24 10
输出格式
2 120
C语言解答
#include<stdio.h> int f(int a,int b) { int x,y,r; x=a>=b?a:b; y=a<=b?a:b; r=x%y; while(r!=0) { x=y; y=r; r=x%y; } return y; } int g(int a,int b) { int t=f(a,b); return (a*b)/t; } int main(void) { int a,b; scanf("%d%d",&a,&b); printf("%d %d\n",f(a,b),g(a,b)); return 0; }
C++解答
#include <stdio.h> int main() { int gcd(int a, int b); int lcm(int a, int b); int a, b; scanf("%d%d", &a, &b); printf("%d %d\n", gcd(a, b), lcm(a, b)); return 0; } int gcd(int a, int b) { int temp; while (b != 0) { temp = a % b; a = b; b = temp; } return a; } int lcm(int a, int b) { return a / gcd(a, b) * b; }
Java解答
import java.util.*; public class Main { public static void main(String[] args) { Scanner in=new Scanner(System.in); int n=in.nextInt(); int m=in.nextInt(); int g=n; int gcd=1,k=2; while(k<=n&&k<=m){ if(n%k==0&&m%k==0) gcd=k; k++; } for(int i=n;i<=n*m;i++){ if(i%n==0&&i%m==0){ g=i; break; } } System.out.println (gcd+" "+g); } }