A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 董月峰 于 2014-1-4 14:41 编辑

编程打印所有的3位质数
质数特点:只能被1和其本身整除
*/
public class Test6
{
        public static void main(String[] args)
        {
                int x=0;
                for(int i=100;i<1000;i++)
                {
                        for(int j=i-1;j>1;j--)
                        {
                                if(i%j==0)
                                        x=0;
                                else
                                        x=1;
                        }
                        if(x==1)
                        System.out.println(i);
                }
               
        }

}
//我输出结果是100-1000所有的鸡数特喵的错在哪了

评分

参与人数 1技术分 +1 收起 理由
滔哥 + 1

查看全部评分

4 个回复

倒序浏览
本帖最后由 几番意难相付 于 2014-1-4 14:44 编辑
  1. public class Test6
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 int x=0;
  6.                 for(int i=100;i<=1000;i++)
  7.                 {
  8.                         for(int j=i-1;j>1;j--)
  9.                         {
  10.                                 if(i%j==0){
  11.                                          x=0;
  12.                                         break;
  13.                                 }
  14.                                 else
  15.                                         x=1;
  16.                         }
  17.                 if(x==1)
  18.                          System.out.println(i);
  19.                 }      
  20.         }
  21. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
滔哥 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 几番意难相付 于 2014-1-4 14:59 编辑

先说说你程序的逻辑
1,定义一个变量 用来判断某个数是否符合质数的条件
2,定义一个循环 循环次数为100到1000的差,也就是在100到1000中找你需要的数
3,没循环一次 就用这个数除以该数到1之间的每个值
4,如果在执行上面的循环的过程中 该数能被另一个数整除 则跳出循环
5,如果这个数不能被其他数整除 则将第一步中定义的变量的值改为1
6 ,判断第一步中定义的变量的值 如果是1就打印i的值


说说你的程序为什么出错
在第6步上,假如一个数不能被其他的数整除 x的值就变为1了

此后 x的值没有被其他代码改变过 也就是x始终都为1 打印语句的if(x==1)这句代码就永远成立导致i的值始终被打印

解决方法 像我上面的代码那样 如果这个数不是质数 则把x的值改为0 继续下一次循环

评分

参与人数 1技术分 +1 收起 理由
滔哥 + 1

查看全部评分

回复 使用道具 举报
几番意难相付 发表于 2014-1-4 14:53
先说说你程序的逻辑
1,定义一个变量 用来判断某个数是否符合质数的条件
2,定义一个循环 循环次数为100到1 ...

谢谢解惑,改用布尔判断了
public class Test6
{
        public static void main(String[] args)
        {
                for(int i=100;i<1000;i++)
                {
                        boolean x=true;
                        for(int j=i-1;j>Math.sqrt(j);j--)
                        {
                                if(i%j==0)
                                {
                                        x=false;
                                        break;
                                }
                        }
                        if(x)
                                System.out.println(i);
                }
               
        }

}

评分

参与人数 1技术分 +1 收起 理由
田磊阳 + 1

查看全部评分

回复 使用道具 举报
楼上正解
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马