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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

a7714678

初级黑马

  • 黑马币:18

  • 帖子:5

  • 精华:0

求助,要求100到1000的质数,大家帮忙看看我哪里错了打印结果里有个997,997很明显不是质数啊(能被3整除)


class  zhishu
{
        public static void main(String[] args)
        {       
                for (int x=100;x<1000 ;x++ )
                {
                        int count=0;                       
                        for (int y=1;y<= x ;y++ )
                        {
                                if (x%y == 0)
                                {
                                        count++;                                       
                                }
                        }
                        if (count < 3)
                        {
                                System.out.println(x+"为质数");                                        
                        }
                }
       
        }
}



评分

参与人数 1技术分 +1 收起 理由
MVP + 1

查看全部评分

16 个回复

倒序浏览
int count = 0 后面的分号改成英文的
回复 使用道具 举报
亲,997明显不能被3整除吧:L
回复 使用道具 举报
小学数学是硬伤…………
回复 使用道具 举报
997能被3整除?
回复 使用道具 举报
class  ZhiShu
{
        public static void main(String[] args)
        {        
        //        long ts = System.currentTimeMillis();
                for (int x=100;x<1000 ;x++ )
                {
                        int count=0;                     
                        for (int y=2;y<x ;y++ )
                        {
                                if (x%y == 0)
                                {
                                        count++;  
                                        break;
                                }
                        }
                        if (count==0)
                        {
                                System.out.println(x+"为质数");                                         
                        }      
                }
             //   long te = System.currentTimeMillis();
            //    System.out.println(te-ts);
        }
}

楼主代码是对的。我优化了下。这样写比楼主原代码大概能提高一半的效率。。。贱笑了   ps.不要黑你数学老师。。。。

评分

参与人数 1技术分 +1 收起 理由
MVP + 1

查看全部评分

回复 使用道具 举报 1 0
各种大神 学习了
回复 使用道具 举报
类名每个单词首字母改为大写,培养好习惯很重要哦
回复 使用道具 举报
:lol研究研究
回复 使用道具 举报
看了一下大家的代码有点水(不要喷我啊),我给你提供一种示范吧。997/3==332.3333333……
  1. public class Test {
  2.         public static void main(String[] args) {
  3.                 for (int i = 100; i <= 1000; i++)
  4.                         if (isPrime(i))// 如果是素数就打印
  5.                                 System.out.println("我是素数: " + i);
  6.         }
  7.         private static boolean isPrime(int arr) {
  8.                 for (int i = 2; i * i <= arr; i++) {//对你没有看错,是i*i<=arr
  9.                         if (arr % i == 0)// 能够模除表示不是素数
  10.                                 return false;
  11.                 }
  12.                 return true;//如果是素数就返回true
  13.         }
  14. }
复制代码



回复 使用道具 举报
韶山 高级黑马 2014-11-14 17:16:37
11#
学习了真不错。
回复 使用道具 举报
class zhishu{
        public static void main(String[] args) {
               
                int j;
                for (int i = 100; i <= 1000; i++) // 1不是素数,所以直接从2开始循环
                {
                        j = 2;
                        while (i % j != 0) {
                                j++; // 测试2至i的数字是否能被j整除,如不能就自加
                        }
                        if (j == i) // 当有被整除的数字时,判断它是不是自身
                        {
                                System.out.println(i); // 如果是就打印出数字
                        }
                }
        }
}

这个我写的 感觉思路比较易懂 ,代码简单 .搂住看看
回复 使用道具 举报
代码没错,是你自己算错了,997不能被3整除。
但是为了提高效率,内层循环应该从2开始,包括2,一直到被检查的数字的一半
即外层循环当前数字的一半,不包括一半,包括了2就不需要包括了。
回复 使用道具 举报
Evred 中级黑马 2014-11-14 21:52:28
14#
这是用来考验大家的智商的吗??
回复 使用道具 举报
  1. public class ZhiShu {
  2.         //求100-1000的质数
  3.         public static void main(String[] args) {
  4.                 //设一个变量,来记录个数
  5.                 int count=0;
  6.                 for (int i = 100; i <=1000; i++) {
  7.                         //模2为0的就是质数吧。
  8.                         if (i%2==0) {
  9.                                 System.out.println(i);
  10.                                 count++;
  11.                         }                       
  12.                 }       
  13.                 System.out.println("100-1000中质数一共有"+count+"个");
  14.         }
  15. }
复制代码

回复 使用道具 举报
呵呵!没有大问题
回复 使用道具 举报
思想,,,真的很重要
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马