在JAVA中如何实现求最大公约数和最小公倍数
题目中没有具体是两个数还是几个数。
[解决办法]
写个求两个数的公约数或公倍数的方法。
把要求的数全部放到数组里
迭代的把所有数两个两个的放到方法里求并返回结果,并把结果再拿去求
[解决办法]
先比较两个数的大小,在用大的取于较小的数,将较小的数作为下一轮较大的数,余数作为较小的数如此循环,到余数为零返回较大的数, 此数为最大公约数,把两数相成除以最大公约数就是最小公倍数了。
[解决办法]
import java.util.*;
public class pxl_1012 {
public static void main(String[] args) {
int a ,b,m;
Scanner s = new Scanner(System.in);
System.out.print( "键入一个整数: ");
a = s.nextInt();
System.out.print( "再键入一个整数: ");
b = s.nextInt();
deff cd = new deff();
m = cd.deff(a,b);
int n = a * b / m;
System.out.println("最大公约数: " + m);
System.out.println("最小公倍数: " + n);
}
}
class deff{
public int deff(int x, int y) {
int t;
if(x < y) {
t = x;
x = y;
y = t;
}
while(y != 0) {
if(x == y) return x;
else {
int k = x % y;
x = y;
y = k;
}
}
return x;
}
[解决办法]
参考一下这个
- Java code
package test;/** * 求两个数的最大公约数 * @author xqh * */public class BigCommonNumber { public static void main(String[] args) { int a = 100; // 第一个数 int b = 15; // 第二个数 System.out.println(f(a, b)); } /** * 求两个数的最大公约数 * 辗转法 * @param i 第一个数 * @param j 第二个数 * @return 最大公约数 */ public static int f(int i, int j){ return j == 0 ? i : f(j, i % j); }}