当前位置: 代码迷 >> J2SE >> 孙子算经用Java求解?该如何解决
  详细解决方案

孙子算经用Java求解?该如何解决

热度:262   发布时间:2016-04-24 17:57:00.0
孙子算经用Java求解????
“今有物不知其数,三三数之剩二,五五数之剩三,七七数之剩二,问物几何?”按照今天的话来说:一个数除以3余2,除以5余3,除以7余2,求这个数.

当然可以用Java编程来实现,得出个23的结果。

  这个问题中,我总觉得这是在整数中的最小的一个,也应该还有一大串,于是我就想着用Java编程来把10000以内满足要求的这串数都找出再存在一个数组中,

  我写了下面这段代码,

public   class   JavaCalc{
    //static   int   Result=0;
  //   boolean   flag=true;
    public   static   void   main(String   []   args){
                  int   Result=0;
                  int[]   rslt=new   int[10];
                  int   i=0;
            for(Result=1;Result <=10000;Result++){
              if   ((Result%3==2)&&(Result%5==3)&&(Result%7==2))
                  //break;
                  //return   Result;}
                  rslt[i++]=Result;
              }
            for(int   j=0;j <rslt.length;j++){
                System.out.println( "the   Result[ "+j+ "]   we   want   is: "+rslt[j]);
                  }
    }
}

可是有问题,是个死循环the   Result[]   we   want   is:   0

  这是怎么回事呢???


------解决方案--------------------
并不是死循环
1000以内一共找到95个(用你的程序,我不知道结果是否正确)
所以是你的数组定义得太小了。

你应该会得到一个OutOfIndexException的
------解决方案--------------------
public static void main(String [] args){
int Result=0;
int[] rslt=new int[10];
int i=0;
for(Result=1;Result <=10000;Result++){
if ((Result%3==2)&&(Result%5==3)&&(Result%7==2)){
if(i <rslt.length){
rslt[i++]=Result;
}
}

}
for(int j=0;j <rslt.length;j++){
System.out.println( "the Result[ "+j+ "] we want is: "+rslt[j]);
}
}

这用个,你那个会数组下标越界
这个结果是
the Result[0] we want is:23
the Result[1] we want is:128
the Result[2] we want is:233
the Result[3] we want is:338
the Result[4] we want is:443
the Result[5] we want is:548
the Result[6] we want is:653
the Result[7] we want is:758
the Result[8] we want is:863
the Result[9] we want is:968

------解决方案--------------------
标记一下
------解决方案--------------------
呵呵,孙子不是让大家死算的.

public static void sunzi(int max){
for(int i=0; i <max; i++){
int data = 105*i+23;
if(data > max){
break;
}
System.out.println( " "+data);
}
}

效率至少相差两个数量级:)
------解决方案--------------------
ls的方法有点痞,就像算fibbonacci不用递归直接把函数写出来,呵呵
------解决方案--------------------
  相关解决方案