典型静态方法的实现
1,计算整数的绝对值:
public static int abs(int x) {
if(x < 0) return -x;
else return x;
}
//绝对值的规则很简单:不小于零就是本身,反之就返回-x;
2, 计算浮点数的绝对值:
public static double abs(double x) {
if( x < 0.0) return -x;
else return x;
}
3, 判断一个数是否是素数:
public static boolean isPrime(int n) {
if(n < 2) return false; //大于1的自然数,1不是素数
for(int i = 2; i * i <= n; i++) { //i * i <=n
if(n % i == 0) return false;
return true;
}
//素数,就是质数。指在一个大于1的自然数中,除了1和此整数自身外,不能被其他自然数整除的数。
判断的关键点:
a, 小于2,不是;
b,从2到n遍历,遍历到一个i * i > n之前的数就提前结束遍历,因为2到满足i * i <= n的i之间的这些数如果能整除n,那么i之后到n的这些数也能;以满足i * i <=n为分界线,1...n之间的数对于整除n来说,是对称的;
判断n能否被i整除:n % i 的值是否为0;
4, 计算平方根(牛顿迭代法):
public static double sqrt(double c) {
if(c < 0) return Double.NaN;
double err =1e-15; //1乘以10的负15次方
double t = c;
while(Math.abs(t - c / t) > err *t)
t = (c/t + t) / 2.0;
return t;
}
//不懂, TODO
5, 计算直角三角形的斜边:
public static double hypotenuse(double a, double b) {
return Math.sqrt(a * a + b * b);
}
6, 计算调和级数:
public static double H(int n) {
double sum = 0.0;
for(int i = 1; i <=n; i++)
sum += 1.0 / i;
return sum;
}
//形如1/1+1/2+1/3+…+1/n+…的级数称为调和级数,它是 p=1 的p级数。 调和级数是发散级数。在n趋于无穷时其部分和没有极限(或部分和为无穷大)。