判断是否是素数
public static boolean isPrime(int i) {
if (i<2) {
return false;
}
for (int j=2; j *j <i; j++) {
if(i%j==0){
System.out.println(j);
return false;
}
}
return true;
}
牛顿迭代
http://blog.csdn.net/young_gy/article/details/45766433
public static double sqrt(double n) {
if(n<0){
return Double.NaN;
}
double err=1e-15;
double t=n;
while(Math.abs(t-n/t)>err*t){
t=(n/t+t)/2;
}
return t;
}
求最大公约数 (欧几里得算法)
public static int gcd(int p,int q) {
if(q==0) return p;
int r=p%q;
return gcd(q, r);
}
二分查找的递归实现
public static int rank(int key,int[] a,int lo,int hi) {
if(lo>hi) return -1;
int mid=(lo+hi)/2;
if(key>a[mid]){
return rank(key, a, mid+1, hi);
}else if(key>a[mid]){
return rank(key, a, lo, mid-1);
}else{
return mid;
}
}
二分查找(非递归)
public static int rank(int key,int []a) {
int lo=0;
int hi=a.length-1;
while (lo<=hi) {
int mid=(lo+hi)/2;
if (key>a[mid]) {
lo=mid+1;
} else if(key<a[mid]){
hi=mid-1;
}else {
return mid;
}
}
return -1;
}