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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 探索者 中级黑马   /  2015-6-2 21:33  /  331 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. /*
  2. 需求:打印出2000以内的所有质数。

  3. 思路:
  4.         用第一个循环去从2开始遍历2000以内的所有奇数,因为偶数一定不是质数;并用第二层循环去判断所遍历的数是不是质数,
  5.         要判断遍历的数是不是质数,只需整除完从2到自身的sqrt()的所有奇数即可,如果都没有被整除,则
  6.         该数为质数,否则不为质数。
  7. */

  8. class ZhiShuDemo
  9. {
  10.         public static void main(String[] args)
  11.         {
  12.                 printZhiShu(2000);
  13.         }

  14.         public static void printZhiShu(int key)
  15.         {
  16.                 int count=1,flag=0;//定义一个计数器和标记;
  17.                
  18.                 //将2到9之间的数直接放到循环外面去判断,可省去无效的判断次数;
  19.                 System.out.println(2+"--"+count+" ");
  20.                 for (int x=3;x<9 ;x+=2 )
  21.                 {
  22.                         count++;
  23.                         System.out.println(x+"--"+count+" ");
  24.                 }
  25.                 for (int x=9;x<=key ;x+=2 )//对9到2000的数进行遍历;
  26.                 {

  27.                         for (int y=3;y<=(int)Math.sqrt(x);y+=2)//判断是否为质数,只需整除完2到自身的一半;
  28.                         {
  29.                                 if ((x%y)==0)
  30.                                 {
  31.                                         flag=1;//如果能够被整除,标志置为1;
  32.                                         break;//跳出当前循环;
  33.                                 }
  34.                         }

  35.                         if (flag==0)//如果标志为0,则计数器加1,并打印该质数和累加的次数;
  36.                         {
  37.                                 count++;
  38.                                 System.out.println(x+"--"+count+" ");
  39.                         }
  40.                         flag=0;
  41.                 }
  42.         }

  43. }
复制代码


1 个回复

倒序浏览
顶顶顶顶顶顶
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马