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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Feboam 中级黑马   /  2016-4-4 00:15  /  1601 人查看  /  23 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

新手入门   菜鸟代码: 菜鸟虽菜  ..........
class Work71 {
        public static void main(String[] args) {
                int x = 0;                    
                int y = 0;
                int a = 0;            
                for ( x = 2;x <=100 ;x++ ) {          //1 - 100的数
                                int c = 0;                    //计数 初始化
                        for (y = 1;y <=x ;y++ ) {         //
                         if (x % y==0) {               
                                         c++;                  //记录能被 x整除的个数
                         }
                                 if (c==2&&y==x) {        //   输出素数   
                                         System.out.print(x+"\t");
                                         a++;           //记录素数的个数
                                 }
                                 if (a % 5==0&&y==x) {    //每满5个素数就在第五个素数后面转行
                                                 System.out.println();
                                 }
                        }
                }
                 System.out.println(a);
        }
}

23 个回复

倒序浏览
本帖最后由 yaolv7 于 2016-4-4 13:20 编辑

分析:
                1、2是最小的,也是唯一的偶数素数,所以,除了2以外的所有偶数都可以排除
                2、大于1的,并且只能被1和其本身整除的数叫素数,所以,当一个大于1的整数,
                   模以小于它的所有奇数等于0时 , 如果这个整数和它本身相等,那么这个整数就是素数。
  1.         public static void print(int a){
  2.                                 int j;
  3.                                 int count = 1;
  4.                                 System.out.print(2 + "\t" );

  5.                                 for (int i = 3; i < a; i+=2) {
  6.                                         for ( j = 3; j < i; j+=2) {
  7.                                                 if (i % j == 0)
  8.                                                         break;
  9.                                         }
  10.                                         if (j == i) {
  11.                                                 System.out.print(i + "\t");
  12.                                                 count++;
  13.                                                 if(count % 5 == 0)
  14.                                                         System.out.println();
  15.                                         }
  16.                                 }
  17.                         }
复制代码



同菜鸟
回复 使用道具 举报
  1. for( int i; i < 10; a++) {
  2.    //int i直接写里面就行了, 不用在外面
  3. }
复制代码

  1. for(初始化表达式;条件表达式;循环后的操作表达式)  {
  2.                         循环体;
  3.           }
复制代码

评分

参与人数 1黑马币 +2 收起 理由
洋葱头头 + 2

查看全部评分

回复 使用道具 举报 1 0
回复 使用道具 举报
自己弄了一下,可以的
回复 使用道具 举报
TwooMoore 发表于 2016-4-4 08:55
自己弄了一下,可以的

自己弄得清楚很多  看别人的在自己打   理解了 感觉下次还是有问题
回复 使用道具 举报
路过的朋友 拿个路费再走
回复 使用道具 举报
菊花爆满山 来自手机 中级黑马 2016-4-4 10:37:42
8#
代码有点乱啊,内部循环判断是否是素数改成从2到sqrt(x)更好
回复 使用道具 举报
就这个题目难啊!
回复 使用道具 举报
本帖最后由 yaolv7 于 2016-4-4 22:10 编辑

感觉这样更好


  1. public static void printPrimeNumber(int a){
  2.                         
  3.                         System.out.print(2 + "\t" );                        //2是唯一的偶数素数,先打印
  4.                         int count = 1;                                                        //定义计数器

  5.                         outer: for (int i = 3; i < a; i+=2) {
  6.                                 for (int j = 3; j < i; j+=2) {
  7.                                         if (i % j == 0)
  8.                                                 continue outer;            //区别
  9.                                 }        //内循环结束
  10.                                 System.out.print(i + "\t");
  11.                                        
  12.                                 count++;
  13.                                 if(count % 5 == 0)
  14.                                         System.out.println();
  15.                                 
  16.                         }        //外循环结束
  17.                         System.out.println("\n" + a + "以内的素数一共有:" + count + "个")
  18.                 }
复制代码
回复 使用道具 举报

还没学多久 所以有些东西不很熟悉是
回复 使用道具 举报
Feboam 发表于 2016-4-4 20:43
还没学多久 所以有些东西不很熟悉是

这完全就是用基础前4天的内容就能写出来的,我也才学4天的内容...
回复 使用道具 举报
yaolv7 发表于 2016-4-4 22:09
这完全就是用基础前4天的内容就能写出来的,我也才学4天的内容...

逗我 你那个调用了方法      哈哈      先前不懂什么计数器 没经验
回复 使用道具 举报
菊花爆满山 发表于 2016-4-4 10:37
代码有点乱啊,内部循环判断是否是素数改成从2到sqrt(x)更好

额 新手刚刚上手    多多包涵   
回复 使用道具 举报
253663946 发表于 2016-4-4 11:56
就这个题目难啊!

额  我傻傻的想了  一上午 才 弄清楚   
1. 要对素数有概念  (我知道什么 是素数  确没想到 还有素数多是奇数)
2.我的方法    对for循环和if语句要熟练才行    经过一上午我是有点熟练了

点评

恩恩,我也有方法解决它了,但是不高效  发表于 2016-4-9 12:30
回复 使用道具 举报
厉害厉害!受教了!
回复 使用道具 举报
ambition1 发表于 2016-4-4 22:53
厉害厉害!受教了!

我必胜  你是怎么找到我的这么久了
回复 使用道具 举报
Feboam 发表于 2016-4-4 22:16
逗我 你那个调用了方法      哈哈      先前不懂什么计数器 没经验

方法调用就是第4天学的呢,哥们,少看视频,多敲代码,
那什么,键盘敲烂,月薪过万
回复 使用道具 举报

这个题方法实在是多
回复 使用道具 举报
Feboam 来自手机 中级黑马 2016-4-5 00:05:09
20#
yaolv7 发表于 2016-4-4 23:29
方法调用就是第4天学的呢,哥们,少看视频,多敲代码,
那什么,键盘敲烂,月薪过万 ...

额确实  
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马