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

© Feboam 中级黑马   /  2016-4-4 00:15  /  1887 人查看  /  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 个回复

正序浏览
  1. package test;

  2. public class Test3 {

  3.         /**
  4.          * @param args
  5.          */
  6.         public static void main(String[] args) {
  7.                 boolean flag;
  8.                 int a = 100;
  9.                 int count = 0;
  10.                 for (int i = 1; i <= a; i++) {
  11.                         flag = isPrime(i);
  12.                         if (flag) {
  13.                                 System.out.print(i + "\t");
  14.                                 count++;
  15.                                 if (count % 5 == 0)
  16.                                         System.out.println();
  17.                         }
  18.                 }
  19.         }

  20.         /*
  21.          * 素数:只能被1和该数本身整除的数
  22.          * 分析:只要不能被整除,也就是使用%运算符得到的结果等于0, 就不是素数
  23.          */
  24.         public static boolean isPrime(int a) {
  25.                 /*
  26.                  * 算到该数平方根就可以了
  27.                  * 为什么是平方根?
  28.                  * 假设数    a = m * n 且 m <= n;(m 和 n 就是它的两个解,也就是2个实数根)
  29.                  *        则     m * m <= m * n;
  30.                  *            √m*m  <=  √m*n;
  31.                  *                m <= √a ;
  32.                  *        所以,只需要求从2到√a之间的所有值就可以了
  33.                  */
  34.                 //遍历从2至a的平方根的所有数
  35.                 for (int i = 2; i <= Math.sqrt(a); i++) {
  36.                         //如果有值能够整除a,则不是素数
  37.                         if (a % i == 0) {
  38.                                 return false;
  39.                         }
  40.                 }
  41.                 //如果知道遍历完都没有找到该值,则该数就是素数
  42.                 return true;
  43.         }
  44. }
复制代码
回复 使用道具 举报
这得回去重新复习了我,乍一看居然没有头绪
回复 使用道具 举报
Feboam 来自手机 中级黑马 2016-4-5 00:07:06
21#
BackingAlongRay 发表于 2016-4-4 23:43
这个题方法实在是多

嗯嗯   只要自己想滴  就能说明理解这知识点了    晚安咯
回复 使用道具 举报
Feboam 来自手机 中级黑马 2016-4-5 00:05:09
20#
yaolv7 发表于 2016-4-4 23:29
方法调用就是第4天学的呢,哥们,少看视频,多敲代码,
那什么,键盘敲烂,月薪过万 ...

额确实  
回复 使用道具 举报

这个题方法实在是多
回复 使用道具 举报
Feboam 发表于 2016-4-4 22:16
逗我 你那个调用了方法      哈哈      先前不懂什么计数器 没经验

方法调用就是第4天学的呢,哥们,少看视频,多敲代码,
那什么,键盘敲烂,月薪过万
回复 使用道具 举报
ambition1 发表于 2016-4-4 22:53
厉害厉害!受教了!

我必胜  你是怎么找到我的这么久了
回复 使用道具 举报
厉害厉害!受教了!
回复 使用道具 举报
253663946 发表于 2016-4-4 11:56
就这个题目难啊!

额  我傻傻的想了  一上午 才 弄清楚   
1. 要对素数有概念  (我知道什么 是素数  确没想到 还有素数多是奇数)
2.我的方法    对for循环和if语句要熟练才行    经过一上午我是有点熟练了
回复 使用道具 举报
菊花爆满山 发表于 2016-4-4 10:37
代码有点乱啊,内部循环判断是否是素数改成从2到sqrt(x)更好

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

逗我 你那个调用了方法      哈哈      先前不懂什么计数器 没经验
回复 使用道具 举报
Feboam 发表于 2016-4-4 20:43
还没学多久 所以有些东西不很熟悉是

这完全就是用基础前4天的内容就能写出来的,我也才学4天的内容...
回复 使用道具 举报

还没学多久 所以有些东西不很熟悉是
回复 使用道具 举报
本帖最后由 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.                 }
复制代码
回复 使用道具 举报
就这个题目难啊!
回复 使用道具 举报
菊花爆满山 来自手机 中级黑马 2016-4-4 10:37:42
8#
代码有点乱啊,内部循环判断是否是素数改成从2到sqrt(x)更好
回复 使用道具 举报
路过的朋友 拿个路费再走
回复 使用道具 举报
TwooMoore 发表于 2016-4-4 08:55
自己弄了一下,可以的

自己弄得清楚很多  看别人的在自己打   理解了 感觉下次还是有问题
回复 使用道具 举报
自己弄了一下,可以的
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马