“今有物不知其数,三三数之剩二,五五数之剩三,七七数之剩二,问物几何?”按照今天的话来说:一个数除以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 这是怎么回事呢???

解决方案 »

  1.   

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

  2.   

    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
      

  3.   

    呵呵,孙子不是让大家死算的.  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);
        }
      }效率至少相差两个数量级:)
      

  4.   

    ls的方法有点痞,就像算fibbonacci不用递归直接把函数写出来,呵呵
      

  5.   

    今有物不知其数,三三数之剩二,五五数之剩三,七七数之剩二,问物几何?我是通过分析得出的105*i+23这个公式的.简要说明一下我分析的过程:1.因为"五五数之剩三",所以数的尾数一定是3或8
    2.分析尾数是3的情况
    2.1 因为要符合"三三数之剩二", 所以这个数一定是(n*10+7)*3+2这样的组成(3*7的末尾数是1)
    2.2 因为要符合"七七数之剩二", 所以这个数一定是(n*10+3)*7+2这样的组成(7*3的末尾数是1)
    2.3 根据2.1和2.2,这个数是n*21+2这种格式,同时,因为末尾数一定要是3,所以得出式子1:
        y=21*(10*x+1)+2  {x=0,1,2...}
    3.分析尾数是8的情况,比尾数为3的情况复杂一些,过程略,得出式子2:
        y=42*(5*x+3)+2  {x=0,1,2...}
    4.结合式子1和式子2,得出结论:
        y=105*x+23  {x=0,1,2...}