黑马程序员技术交流社区

标题: 求救去素数,,有会做的没??程序有点小问题,,, [打印本页]

作者: 坏坏坏男孩    时间: 2016-7-11 23:49
标题: 求救去素数,,有会做的没??程序有点小问题,,,
public class everyday {
//求101到200之间的素数.count用来计数,n用来存放模,m用来存放模是零的数的个数.  但是运行的结果是只有101   1个素数,,程序该怎么调整??
        public static void main(String[] args) {
                int count=0,n=0,m=0;
                for (int i = 101; i < 200; i++) {
                         for (int j = 1; j <= i; j++) {
                                        n = i % j;
                                        if (n==0) {
                                                m=m+1;
                                          }
                                       
                                        }
                                        if (m==2) {
                                                System.out.println(i);
                                                count++;
                                                m=0;
                                        }
                }
                        System.out.println(count);
               
        }

}
作者: cat73    时间: 2016-7-12 00:02
算法请参考这里:
http://bbs.itheima.com/thread-315230-1-1.html
作者: 745661590    时间: 2016-7-12 01:10
本帖最后由 745661590 于 2016-7-12 01:11 编辑

程序分析:首先明白什么是素数,只能被1和本身整除的数,用循环遍历101-200之间的数,然后用101~200间的书整出2到该数前面一个数,比如是113,我们113整除2~112之间的数,只要这里的数整出都不等于0,则可以判断这个数是素数;
class HelloWorld {
        public static void main(String[] args) {  
                int x = 0;//素数标志位
                int y = 0;//素数换行标志位
                for (int i = 101; i <= 200; i++) {  
                        for (int j=2; j<i; j++) {  
                                //如果j能被i整出在跳出循环  
                                if (i % j == 0)  {
                                        x = 0;
                                        break;  
                                }
                                else {
                                        //2到I-1之间无可以整除数,让标志位置一
                                        x = 1;
                                }
                        }
                        //如果素数标志位为一时,让换行标志位加一,并输出素数值
                        if (x == 1) {
                                y++;
                                System.out.print(i + "  ");
                                //素数达到五个时换行操作
                                if (y == 5) {
                                        y = 0;
                                        System.out.println();
                                }
                        }               
                }      
    }
}
作者: 745661590    时间: 2016-7-12 01:23
第二种想法:
class HelloWorld {
        public static void main(String[] args) {  
                int y = 0, x = -1;
                for (int i = 101; i <= 200; i++) {
                        x = -1;
                        for (int j = 1; j < i; j++) {  
                                if (i % j == 0) {
                                        x++;
                                }
                        }
                        if ( x == 0 ) {
                                y++;
                                System.out.print(i + "  ");
                                if (y == 5) {
                                        y = 0;
                                        System.out.println();
                                }
                        }               
                }      
    }
}
作者: cat73    时间: 2016-7-12 01:39
  1.         final List<Integer> nums = new ArrayList<>();
  2.         nums.add(2);

  3.         start: for (int num = 3; num <= 200; num++) {
  4.             for (int i = 0; i < nums.size(); i++) {
  5.                 if (num % nums.get(i) == 0) {
  6.                     continue start;
  7.                 }
  8.             }

  9.             nums.add(num);
  10.         }

  11.         for (final int num : nums) {
  12.             if (num > 101) {
  13.                 System.out.print(num);
  14.                 System.out.print(' ');
  15.             }
  16.         }
  17.         System.out.println();
复制代码

输出结果:
  1. 103 107 109 113 127 131 137 139 149 151 157 163 167 173 179 181 191 193 197 199
复制代码





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