public class FibonacciTest { public static void main(String[] args) throws IOException { // TODO Auto-generated method stub
int startNumber = 10; // the start number as the parameter n int trialNumber = 41; // the number of trials
long[][] recordData = new long[trialNumber][5]; // records for each trial, including the parameter n, and the time used for two methods (recursion and iteration).
for(int i=0;i<trialNumber;i++) { // One loop for each trial. long n = startNumber + i;
long startTimeRecursion = System.currentTimeMillis(); //start time long fib_recursion = Fibonacci.getByRecursion(n); //get Fibonacci by recursion long endTimeRecursion = System.currentTimeMillis(); //end time
long startTimeIteration = System.currentTimeMillis(); //start time long fib_iteration = Fibonacci.getByIteration(n); //get Fibonacci by recursion long endTimeIteration = System.currentTimeMillis(); //end time
//GCD /** * 求解最大公因数 */ public class GCD { /** * 暴力枚举法 * @param a * @param b * @return */ public static int getByBruteForce(int a, int b){ int result = 0;
for (int i = Math.min(a, b); i > 0; i--) { if (a % i == 0 && b % i == 0){ result = i; break; } }
return result; }
/** * 欧几里得法 * @param a * @param b * @return */ public static int getByEuclid(int a, int b){ while(a != 0 && b != 0){ if(a > b){ a = a % b; }else{ b = b % a; } }
//GCDTest public class GCDTest { public static void main(String[] args) { // TODO Auto-generated method stub int startNum = 100000000; int increment = 100000000; int runTime = 20;
for(int i=0; i<runTime; i++) { int b = startNum + i*increment; int a = new java.util.Random().nextInt(b);
long startTimeEuclid = System.currentTimeMillis(); int gcd_euclid = GCD.getByEuclid(a,b); long endTimeEuclid = System.currentTimeMillis(); long time_euclid = endTimeEuclid - startTimeEuclid;
long startTimeBrute = System.currentTimeMillis(); int gcd_brute = GCD.getByBruteForce(a,b); long endTimeBrute = System.currentTimeMillis(); long time_brute = endTimeBrute - startTimeBrute;