獲得兩個隨機數(100以內),並放入數組中
public int[] getTwoRandom(){ int[] t = new int[2]; Random rand = new Random(); for(int i=0;i<t.length;i++) { t[i] = rand.nextInt(100); } return t; }
1、一般算法,連續整數檢測法即從m和n中比較小的數開始一次遍歷整數,如果有出現可以同時被m和n整除的數,就是最大公約數
//連續整數檢測法 public int getDivisor1(int[] arr){ int t=0; int i1=0,i2=0; for(int i=0;i<arr.length;i++){ i1=arr[0]; i2=arr[1]; } if(i1>i2){ t=i2; }else{ t=i1; } for(int i=t;i>1;i--){ if((i1%i==0)&&(i2%i==0)){ return i; } } return 1; }
2、歐幾里德算法
得到一個大小為2的數組,判斷兩個數的大小
public int getDivisor2(int[] arr){ int i1=40,i2=50; /* for(int i=0;i<arr.length;i++){ i1=arr[0]; i2=arr[1]; } */ int temp =0; if(i1<i2){ temp=i2; i2=i1; i1=temp; } return gcd(i1,i2); }
(1)、遞歸方法
public static int gcd(int m,int n){ //使用遞歸算法實現 if(n==0){ return m; }else{ return gcd(n,m%n); } }
(2)、一般循環方法
//使用while循環 public static int gcd1(int m,int n){ int t = m%n; while(t!=0){ m=n; n=t; t=m%n; } return n; }