package cn.digui_2015_11_7_周六;
import java.util.Random;
/*
* 2015.11.7 8:44 周六
* 递归,求最大公约数
*/
public class MaxCommonDivisor {
private static int result = 1;;
public static int[] arr = new int[2];
public static void main(String[] args) {
createTwoRandomB();
maxComDiv(arr[0], arr[1]);
createTwoRandom();
createTwoRandomC();
}
public static void maxComDiv(int num1, int num2) {
int result = recMaxComDiv(num1, num2);
if(result != 1){
System.out.println("the value of MaxCommonDivisor is : " + result);
}else{
System.out.println("not exists MaxCommonDivisor");
}
}
//干活出力的是这个函数
/*
* 查看百度百科 ”最大公约数“ 里,有一种算是是 ”短除符号 “算法,以这个为依据进行的设计
*/
private static int recMaxComDiv(int a, int b) {
for (int i = 2; i <= Math.min(a, b) ; i++) {
if (a % i == 0 && b % i == 0) {
result *= i;
recMaxComDiv(a / i, b / i);
break;
}
}
return result;
}
public static void createTwoRandom() {
Random random = new Random();
int i = 0;
while (true) {
int num = random.nextInt(100);
if (num >= 2) {
arr[i++] = num;
}
if (i == 2) {
break;
}
}
System.out.println("产生的两个随机数是:" + arr[0] + " " + arr[1]);
}
public static void createTwoRandomB() {
for (int i = 0; i < 2; i++) {
arr[i] = (int) (Math.random() * 100 + 2); //范围是[2,102)之间的随机数
}
System.out.println("产生的两个随机数是:" + arr[0] + " " + arr[1]);
}
//下面这个方式是有问题的,当初始条件(一开始运算都)不满足while条件时,arr数组,全是默认值0
public static void createTwoRandomC() {
Random random = new Random();
int i = 0;
int num;
while ((num = random.nextInt(100)) >= 2 && i < 2) {
arr[i++] = num;
}
System.out.println("产生的两个随机数是:" + arr[0] + " " + arr[1]);
}
}
转载于:https://my.oschina.net/u/2507526/blog/527173