黑马程序员技术交流社区

标题: 问一个关于质数的问题,必须帮忙啊大虾们 [打印本页]

作者: 无气打火机    时间: 2013-6-21 18:19
标题: 问一个关于质数的问题,必须帮忙啊大虾们
本帖最后由 无气打火机 于 2013-6-22 21:02 编辑

class Demo {
        public static void main(String[] args) {
                //System.out.println("Hello World!");
                int[] arr={33,22,31};
            int inter=2;
            boolean isZhi=true;
            for (int x = 0; x < arr.length; x++) {
                        while(inter < (arr[x]/2)){
                                if(arr[x] % inter == 0) {
                                                
                                        isZhi=false;
                                        break;
                                }
                                inter++;
                        }
                        if(isZhi) {        
                                arr[x]=0;
                        }
                                System.out.println(arr[x]);
                }
        }
}
以上是代码  为什么31不赋值为0 它是质数啊
作者: 刘利民    时间: 2013-6-21 20:25
以下是修改后的程序,部分解释在代码中:
class Demo
{
        public static void main(String[] args)
  {
              int[] arr={33,22,31};
           // int inter=2;
           // boolean isZhi=true;
     /*
     boolean标志,如果定义在这里,那么它参与整个运算过程中,只赋值了一次,
     那么,在第二次赋值时,也就是 执行“isZhi=false;”语句后,之后的isZhi的值
     一直为false,那么arr[x] = 0;就一直执行不到。
     inter 的初始化也是一样的道理。
     */
     
            for (int x = 0; x < arr.length; x++)
   {
     int inter=2;
     boolean isZhi=true;
                 while(inter < (arr[x]/2))
    {
                    if(arr[x] % inter == 0)
     {           
                         isZhi=false;
                          break;
     }
      inter++;
    }
    if(isZhi)
    {
     arr[x]=0;
    }
     System.out.println(arr[x]);
              }
        }
}





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2