在我的demoe类中,我实现了以下方法:
这个类在另外一个文件,demoe.java中
public class Demoe { //计算一个数字因子的个数 public static int getLenght(int n){ int count = 0 ; for(int i = 1 ; i <= n / 2 ; i++) { if(n % i == 0) count++ ; } count++; return count ; } //求一个数的因子(包含1也包含自己),放入数组并返回 public static int[] getSons(int n){ int []a = new int[getLenght(n)] ; int j = 0 ; for(int i = 1 ; i <= n / 2 ; i++){ if(n % i == 0) a[j++] = i ; } a[j] = n ;//自己也要放进去 return a ; } //获取两个正int类型数组中相同且最大的那个元素 public static int getTheSameMax(int []a , int [] b){ int max = 1 ; //正整数最小就是1 for(int i = 0 ; i < a.length ; i++){ for(int j = 0 ; j < b.length ; j++){ if(a[i] == b[j]){ if(max < a[i]) max = b[i] ; break ; } } } return max ; } //打印数组元素 public static void PrintArray(int []a){ for(int i = 0 ; i < a.length ; i++) System.out.println(a[i]+" "); System.out.println(); } }
在HelloWorld.java中调用方法实现我的程序:
public class HelloWorld { public static void main(String[] args){ // Scanner s = new Scanner(System.in); // System.out.println("请输入一个数字"); // int num = s.nextInt(); //数组与函数的结合 print_arr(12,18); } //求两个数字的最大公约数和最小公倍数(辗转相除法) //a.分别找出两个数的公约数,并放入数组 //b.找出最大的,就是最大公约数 //c.两数想乘/最大公约数 = 最小公倍数 public static void print_arr(int a , int b){ //得到a的公约数 int [] x1 = Demoe.getSons(a); Demoe.PrintArray(x1); //得到b的公约数 int [] x2 = Demoe.getSons(b); Demoe.PrintArray(x2); //找出相同且最大的数是最大公约数 int max = Demoe.getTheSameMax(x1, x2); //最小公倍数 int min = a * b /max ; System.out.println(a+","+b+"的最大公约数是"+"最小公倍数是"+min); } }