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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

package com.heima.xxx;

public class 质数 {

        /**
         * 题目:判断101-200之间有多少个素数,并输出所有素数。
         * 判断素数的方法:用一个数分别去除以2到这个数,如果能被整除,则表明此数不是素数,反之是素数。
         */
        public static void main(String[] args) {
                int count = 0; // 定义计数器,用来记录素数个数
                int a = 101; // 定义初始值,即从101开始进行
                int b = 2;
                int[] arr = new int[200 - 2 + 1];
                for (int i = 0; i < arr.length; i++) { // 定义数组,将2-200的数全部收入
                        arr[i] = b++;
                        if (a == 200) {
                                break;
                        } else if (a == arr[i]) {
                                continue;
                        } else if (a % arr[i] != 0) {
                                System.out.println(a);
                                count++;
                                a++;
                        }
                }
                System.out.println("101到200之间的素数一共有" + count + "个");

        }
}

5 个回复

倒序浏览
你这个也太复杂了点吧。。。来看看我的吧。。。
  1. public static void main(String[] args) {

  2.                 int numS = 0, numE = 20;
  3.                 count(numS,numE);
  4.         }

  5.         public static void count(int numS, int numE) {
  6.                 if(numS <=2) {
  7.                         System.out.println(2);
  8.                         numS = 3;
  9.                 }
  10.                 for (int i = numS; i < numE; i++) {
  11.                         for (int j = 2; j < numS; j++) {
  12.                                 if(i % j == 0) {
  13.                                         break;
  14.                                 }else if (j == numS - 1) {                                       
  15.                                         System.out.println(i);
  16.                                 }
  17.                         }
  18.                 }
  19.         }
复制代码
回复 使用道具 举报
算法没搞清楚
if (a % arr != 0) {
  System.out.println(a);
  count++;
  a++;
}
表示用a模于2-200之间的一个数,只要结果不是0就算a是质数
应该是a模于2-a之间的数,当所有的结果都不是0才算a是质数,具体实现的话只要结果是0就算a不是质数,判断下一个数就行了

评分

参与人数 1黑马币 +2 收起 理由
15281616180 + 2

查看全部评分

回复 使用道具 举报
妄想年少轻狂 发表于 2016-3-20 22:13
算法没搞清楚
if (a % arr != 0) {
  System.out.println(a);

那我该怎么改才好
回复 使用道具 举报
15281616180 发表于 2016-3-29 21:28
那我该怎么改才好

java源文件上传了

Demo.zip

608 Bytes, 下载次数: 40

回复 使用道具 举报

好的,知道了    thx
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马