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

来源:互联网 发布:js 寻找字符串 编辑:程序博客网 时间:2024/06/05 17:46

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


(1)问题分析:最繁琐基本的是立马先想到用定义去做,将所有共同满足的公约数放入一个数组中国,再从数组中找出最大的就是最大公约数

即:最大公约数:.把能够整除某一个数的数,叫做这个数的约数。几个数所公有的约数叫这几个数的公约数。公约数中最大的一个叫做这几个数的最大公约数。
最小公倍数:几个数所公有的倍数,叫做这几个数的公倍数。公倍数中最小的一个(零除外)叫做这几个数的最小公倍数。


//例子都是以求最大公约数为目的介绍方法,最小公倍数即是最大公约数与两个数与最大公约数的余数的乘积或者是两个数的乘积除以最大公约数即为最小公倍数


package Day11;
import java.util.*;
public class Test {
 public static void main(String[] args) {
  Scanner sc =new Scanner(System.in);
  int i=sc.nextInt();
  int j=sc.nextInt();
  
  Test tt = new Test();
  tt.fun(i, j);
 }
 public void fun(int i,int j)
 {
  int t=0;
  int[] array = new int[10];
  if(i<j)
  {
 for(int a=2;a<i;a++)
 {
  if(i%a==0&&j%a==0)
  {
   array[t++]=a;
   
  }
 }
 System.out.println(max(array));
 }
 }
 public int max(int[] array)
 {
  int max=array[0];
  for(int i=0;i<array.length;i++)
  { 
   if(array[i]>=max)
   {
   max=array[i]; 
   }
  }
  return max;
 }

}

(2)使用辗转相除法

package Day11;
import java.util.*;
public class Test1{
 static Scanner sc =new Scanner(System.in);
    static int i = sc.nextInt();
 static int j = sc.nextInt();
 public static void main(String[] args){
 

  max_min(i,j);
 }
 //求最大公约数和最小公倍数
 private static void max_min(int m, int n){
  int temp = 1;
  int yshu = 1;
  int bshu = m*n;
  if(n<m){
   temp = n;
   n = m;
   m = temp;
  }
  while(m!=0){
   temp = n%m;
   n = m;
   m = temp;
  }
  yshu = n;
  bshu /= n;
  System.out.println(i+"和"+j+"的最大公约数为"+yshu);
  System.out.println(i+"和"+j+"的最小公倍数为"+bshu);
 }
}

(3)使用递归方法(简单)

package Day11;
import java.util.*;
public class Test {

 /**
  * @param args
  */
 static int y=1;
 public static void main(String[] args) {
  // TODO Auto-generated method stub
       Scanner sc = new Scanner(System.in);
       int i = sc.nextInt();
       int j = sc.nextInt();
    
  Test tt = new Test();
  System.out.println(tt.fun(i, j));
 }
 public int fun(int i,int j)
 {
  
  if(i<j)
  {
   for(int a=2;a<i;a++)
   {
    if(i%a==0&&j%a==0)
    {
     i=i/a;
     j=j/a;
     y=y*a;
     fun(i,j);//难点:要跳出自己函数调用出口,明白递归真谛,谁调用,跳出时从哪儿跳出接着往下执行。
     break;
    }
   }
   
  }
  return y;
 }

}





原创粉丝点击