第一题:如题 !
还有第二题:如何将0-1之间的数开方 (不能用Math函数)

解决方案 »

  1.   

    第一题: int max=1000;
    int[] ns=new int[max+1];
    for(int i=0;i<max;i++){
    ns[i]=i;
    }
    m1:for(int m=2;m<max;m++){
    int tm=ns[m];
    if(tm==0){
    continue;
    }
    for(int n=m;n<max;n++){
    int r=ns[n]*tm;
    if(r>max){
    continue m1;
    }
    if(r>0){
    ns[r]=0;
    }
    }
    }
    for(int n:ns){
    if(n>=2){
    System.out.print(n+",");
    }
    }
      

  2.   

    第二题: double tn=0.8123d;
    double left=0.0d;
    double right=1.0d;
    for(int i=0;i < 50 && left <= right;i++){
    double mid=(left+right)/2;
    double r=mid*mid;
    if(r>tn){
    right=mid;
    }
    else if(r<tn){
    left=mid;
    }
    else{
    left=mid;
    break;
    }
    }
    System.out.println("结果是:"+left);
      

  3.   

    第二题:
    设Y=√X
    Yn+1 = (Yn + X/Yn)/2double X, Y;double e = 0.000001; //误差
    //输入X
    Y=X;
    double temp=(Y+X/Y)/2;
    while((Y-temp > e)||(temp - Y <e)){
        temp = Y;
        Y = (Y+X/Y)/2;
    }
    System.out.println("Y="+Y);大概写的,没运行过,反正就是这么个公式