作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
从这个问题Java: get greatest common divisor
在获取任何数据类型的gcd时无论是int
, long
, Integer
, Long
, which answer在精度、速度、CPU 使用率等方面更好?
答:
private static int gcdThing(int a, int b) {
return BigInteger.valueOf(a).gcd(BigInteger.valueOf((b))).intValue();
}
乙:
public int GCD(int a, int b) { return b==0 ? a : GCD(b, a%b); }
最佳答案
Random r = new Random();
int[] ints = new int[500000];
for (int i = 0 ; i < ints.length ; i++)
ints[i] = r.nextInt();
for (int i = 0 ; i < ints.length-1; i++)
GCD(i,i+1);
for (int i = 0 ; i < ints.length-1; i++)
gcdThing(i, i + 1);
long start = System.currentTimeMillis();
for (int i = 0 ; i < ints.length-1; i++)
GCD(i,i+1);
System.out.println("GCD: " + (System.currentTimeMillis() - start));
start = System.currentTimeMillis();
for (int i = 0 ; i < ints.length-1; i++)
gcdThing(i, i + 1);
System.out.println("gcdThing: " + (System.currentTimeMillis() - start));
打印:
GCD:13
gcdThing:124
关于Java:获取最大公约数,哪种方法更好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21570890/
我是一名优秀的程序员,十分优秀!