黑马程序员技术交流社区

标题: 神奇的质数~~ [打印本页]

作者: sandra_bae    时间: 2015-5-1 18:50
标题: 神奇的质数~~
  1. /*
  2. 需求:打印出1到100之间所有的质数;每十个打印一行。

  3. 思路:1、质数num就是不能被1和它本身以外的任何数整除,即num%小于num/2的数值不为0;
  4.       2、首先,因为1不是质数,而且任何数都能被1整除要遍历1到100的数;
  5.          当遍历到某个数时,要判断其是否为质数;
  6.       3、判断一个数num是否为质数的方法是:首先要遍历从2到num/2的数,如果遍历到
  7.          能被num整除的数(模为0),则num不是质数,否则num就是质数;
  8.       4、根据第3步,在遍历从2到num/2时,需要一个if...else语句,if里要需要一个break语句,
  9.          当遍历到能被num整除的数时,来跳出当前循环;else语句是当确定num为质数时才执行,
  10.          所以可以用计数器count记录住,即count++。
  11.       5、因为要每十个打印一行,(如果学习了数组的话,就可以把质数添加进数组,然后当
  12.          脚标数+1能整除十的时候进行换行);现在要通过用一个boolean值记录住,然后通过
  13.          if语句,为真时打印这个数,而且当count能整除10时就换行。             
  14. */
  15. class Prime
  16. {
  17.         public static void main(String[] args)
  18.         {
  19.                 int count=0;                                //用于记录质数的个数,以及质数出现的顺序
  20.                 boolean prime=true;                       

  21.                 for(int num=2;num <= 100; num++)//遍历2到100的数,即num
  22.                 {
  23.                         for(int x=2;x <= num/2; x++)//遍历2到num/2的数,即x,用于除num,能整除则num不是质数,反之则是质数
  24.                         {
  25.                                 if(num%x==0)                        //num有能整除的数,即该num不是质数
  26.                                 {
  27.                                         prime=false;                //确定num不是质数,不用再遍历该2到该num的数
  28.                                         break;
  29.                                 }
  30.                                 else                                        //num是质数,用count记录住质数出现的个数,而个数等于该质数出现的顺序
  31.                                 {
  32.                                         prime=true;
  33.                                 }
  34.                         }
  35.                         if(prime)                                        //prime为boolean型变量,上面已经判断出prime为true时,num为质数
  36.                         {
  37.                                 count++;
  38.                                 System.out.print(num+"\t");
  39.                                 if(count%10==0)                        //count为10的倍数时,换行。
  40.                                 {
  41.                                         System.out.print("\n");
  42.                                 }               
  43.                         }
  44.                 }
  45.         }
  46. }
复制代码



作者: rightyuan521    时间: 2015-5-1 19:51
这么清晰!!
作者: Sheng.cn    时间: 2015-5-1 21:53
不错                          
作者: yelebron    时间: 2015-5-1 22:16
嗯 很简单的题目!!!!!
作者: sandra_bae    时间: 2015-5-1 22:26
yelebron 发表于 2015-5-1 22:16
嗯 很简单的题目!!!!!

额,有点水~~




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