1210 - C语言8.13

通过次数

0

提交次数

0

时间限制 : 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);
	}	
}