Viyu

典型静态方法的实现

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趋于无穷时其部分和没有极限(或部分和为无穷大)。






评论
©Viyu | Powered by LOFTER