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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© danielzyj 中级黑马   /  2014-4-15 20:14  /  925 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 danielzyj 于 2014-4-15 20:21 编辑

  1. import java.lang.Math;
  2. /*
  3. 题目:判断101-200之间有多少个素数,并输出所有素数。
  4. 1.程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,
  5. 则表明此数不是素数,反之是素数。
  6. */

  7. class  SushuDemo
  8. {
  9.         public static void main(String[] args)
  10.         {
  11.                 boolean bool = true;
  12.                 for (int x = 101;x<=200 ;x++ )
  13.                 {
  14.                         for (int i = 2;i< Math.sqrt(x);i++ )
  15.                         {
  16.                                 if (x%i==0)
  17.                                 {
  18.                                     
  19.                                         bool = false;
  20.                                         break ;
  21.                                 }
  22.                                                                
  23.                         }
  24.                 if (bool= true)
  25.                 {
  26.                         System.out.print(x+",");
  27.                 }
  28.                
  29.                 }

  30.                
  31.         }
  32. }
复制代码


5 个回复

倒序浏览
本帖最后由 赵连明 于 2014-4-15 20:26 编辑

把12行的boolean bool = true; 放在到14行.
因为你这样17行的if语句内变成 bool = false;后就变不回来了.
还有25行改成 if( bool== true) 或者是if(bool)   
因为bool= true是赋值
回复 使用道具 举报
赵连明 发表于 2014-4-15 20:22
把12行的boolean bool = true; 放在到14行.
因为你这样17行的if语句内变成 bool = false;后就变不回来了.
...

非常感谢
回复 使用道具 举报
本帖最后由 danielzyj 于 2014-4-15 20:50 编辑
赵连明 发表于 2014-4-15 20:22
把12行的boolean bool = true; 放在到14行.
因为你这样17行的if语句内变成 bool = false;后就变不回来了.
...

想明白了 再次感谢
回复 使用道具 举报
  1. class  SuShuDemo
  2. {
  3.         public static void main(String[] args)
  4.         {               
  5.                 out:for (int x = 101;x<=200 ;x++ )
  6.                 {
  7.                         for (int i = 2;i< Math.sqrt(x);i++ )
  8.                         {
  9.                                 if (x%i==0)                              
  10.                                         continue out; //只要x能整除i,就不是素数,直接跳到外循环。                                                      
  11.                         }               
  12.                         System.out.print(x+",");
  13.                 }               
  14.         }
  15. }
复制代码


楼主,这时在你的代码的基础上弄的。
回复 使用道具 举报
  1. import java.lang.Math.*; //我运行的时候没有*貌似不能运行
  2. class  SuShuDemo
  3. {
  4.         public static void main(String[] args)
  5.         {           
  6.                 for (int x = 101;x<=200 ;x++ )
  7.                 {
  8.                                         boolean bool = true;
  9.                                         for (int i = 2;i< Math.sqrt(x);i++ )
  10.                                         {                                       
  11.                                                         if (x%i==0)
  12.                                                      {                 
  13.                                                                         bool = false;
  14.                                                                         break ;
  15.                                                         }
  16.                                                                                                                        
  17.                                         }
  18.                                         if (bool== true)  //你的bool==true是把true赋给bool,而不是判断
  19.                                         {
  20.                                                         System.out.print(x+",");
  21.                                         }
  22.                
  23.                                  }

  24.                
  25.         }
  26. }
复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马