Java最大公约数和最小公倍数

最大公约数有下面两种方法:

辗转相除法:又名欧几里德算法(Euclidean
algorithm)乃求两个正整数之最大公约数的算法。

辗转相减法:尼考曼彻斯法,其特色是做一系列减法,从而求得最大公约数

以下为Java代码:

public class JavaBase

{

static public int gcd1_1(int x, int y)   //非递归的辗转相除法

{

int temp;

do{

temp = x % y;

x = y;

y = temp;

}while(temp != 0);

return x;

}

static public int gcd2_1(int x, int y)   //非递归的辗转相减法

{

int max, min;

int temp;

max = (x > y) ? x : y;

min = (x < y) ? x : y;

while (max != min)

{

temp = max - min;

max = (temp > min) ? temp : min;

min = (temp < min) ? temp : min;

}

return max;

}

static public int gcd1_2(int x, int y)   //递归的辗转相除法

{

return (y == 0) ? x : gcd1_2(y, x % y);

}

static public int gcd2_2(int x, int y)   //递归的辗转相减法

{

if(x == y) return x;

return (x > y) ? gcd2_2(x - y, y) : gcd2_2(x, y - x);

}

public static void main(String args[])

{

int a = 28, b = 48;

int g = 0;

g = gcd1_1(a, b);

System.out.println("最大公约数为:" + g);

g = gcd1_2(a, b);

System.out.println("最大公约数为: " + g);

g = gcd2_1(a, b);

System.out.println("最大公约数为: " + g);

g = gcd2_2(a, b);

System.out.println("最大公约数为:" + g);

System.out.println("最小公倍数为: " + a * b / g); // 最小公倍数

}

时间: 2024-11-07 07:02:37

Java最大公约数和最小公倍数的相关文章

Java最大公约数 最小公倍数

/** * CommonDiviser.java * @author:王超 * 2017年3月15日 * wangChaoPA实习工作练习.com.最大公约数和最小公倍数.CommonDiviser * Copyright (c) 2007, 2016 Infopower corporation All Rights Reserved. */package wangChaoPA实习工作练习.com.最大公约数和最小公倍数; import java.util.Scanner; /** * o * 

Java编写最大公约数和最小公倍数

package javaapplication24; class NegativeIntegerException extends Exception{ String message; public NegativeIntegerException(){ message="方法的参数值不是正整数";} public String toString(){ return message;} } class MaxCommonDivisor{ public int getMaxCommonD

Java程序设计之最大公约数和最小公倍数

题目:输入两个正整数number1和number2,求其最大公约数和最小公倍数. 算法:较大数和较小数取余,较小数除余数,一直到余数为0时,为最大公约数(辗转相除法):最大公倍数numbe1*number2/(最大公约数),下面直接上代码: import java.util.Scanner; public class Max_Min { static int n1; public static void main(String[] args) { Max_Min m = new Max_Min(

java中请给出例子程序:找出两个数的最大公约数和最小公倍数

9.2 找出12和8的最大公约数和最小公倍数.    (视频下载) (全部书籍) public class Test {    public static void main(String[] args) {        getcommon_mu(12,8);        getcommon_div(12,8);    }//计算 最大公约数  和  最小公倍数    static void getcommon_mu(int n, int m) {        int i, b, d;  

写一个方法,求两个数的最大公约数和最小公倍数。

package homework0702; /* * 最大公约数 利用辗转相除法求解两个正整数的最大公约数 在循环中,只要除数不等于0,用较大的数除以较小的数,将小的一个数作为下一轮循环的大数,取得的余数作为下一轮循环较小的数,如此循环直到较小的数值为0,返回较大的数.即为最大公约数. 辗转相除法(欧几里得算法) 定理:两个整数的最大公约数等于其中较小的那个数和两数的相除余数的最大公约数.最大公约数(greatest common divisor)缩写为gcd. 最小公倍数 最小公倍数 = (a

输入两个正整数m和n,求其最大公约数和最小公倍数。

package a; import java.util.*; public class Yueshubeishu { public static void main(String[] args) { System.out.println("输入两个正整数:"); Scanner a=new Scanner(System.in); int m=a.nextInt(); Scanner b=new Scanner(System.in); int n=b.nextInt(); int c=m

代码代码:输入两个正整数m和n,求其最大公约数和最小公倍数。15 20 5

import java.util.Scanner; //输入两个正整数m和n,求其最大公约数和最小公倍数.15 20 5 public class Test { public static void main(String[] args) { int n = inNumber(); int m = inNumber(); int yue = 1; int bei = m*n; for (int i = 2; i < n*m; i++) { if (m % i == 0 && n %

题目:输入两个正整数m和n,求其最大公约数和最小公倍数。

//题目:输入两个正整数m和n,求其最大公约数和最小公倍数. package com.mumu.ready; import java.util.Scanner; public class Multiple { public static void main(String[] args) { Scanner can = new Scanner(System.in); System.out.println("Please input Integer m&n:"); int m =

最大公约数、最小公倍数

import java.util.*; /*求最大公约数和最小公倍数*/ public class MaxCommonDivisorAndMinCommonMultiple { public static void main(String[] args) { Scanner scan = new Scanner(System.in);// 接收控制台输入的信息 System.out.print("请输入第一个整数:"); int num1 = scan.nextInt(); // 取出