最大公约数和最小公倍数--java实现

代码:

   //最大公约数
   public int gcd(int p,int q){
         if(q == 0)    return p;
         return gcd(q, p % q);
    }

   //最小公倍数 
   public int lcm(int p,int q){
         int pq = p * q;
         return pq / gcd(p,q);
    }

测试:

    @Test
    public void go(){
        int p = 5,q =17;
        System.out.println(p+"和"+q+"的最大公约数:"+gcd(p,q));
        System.out.println(p+"和"+q+"的最小公倍数:"+lcm(p,q));
    }
    运行结果:
    5和17的最大公约数:1
    5和17的最小公倍数:85

原理:

  第一个最大公约数使用的2300年前被发明的欧几里得算法求得,大致原理为:

如果有两个非负整数p、q,若q==0,则最大公约数为p;否则,p和q的最大公约数就是p除以q所得的余数和q的最大公约数。

  第二个最小公倍数更简单。

公式:最小公倍数=两整数的乘积÷最大公约数

  

  是不是So Easy!

时间: 2024-08-26 08:16:09

最大公约数和最小公倍数--java实现的相关文章

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(); // 取出

求两个数的最大最大公约数和最小公倍数

package java;    import java.util.ArrayList;  import java.util.List;  import java.util.Scanner;    public class java {      /**      * 输入两个正整数m和n,求其最大公约数和最小公倍数      */      public static void main(String args[]) {          // List<Integer> list=new