黑马程序员技术交流社区

标题: 求助,要求100到1000的质数,大家帮忙看看我哪里错了 [打印本页]

作者: a7714678    时间: 2014-11-14 08:51
标题: 求助,要求100到1000的质数,大家帮忙看看我哪里错了
求助,要求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+"为质数");                                        
                        }
                }
       
        }
}




作者: 郑飞    时间: 2014-11-14 09:08
int count = 0 后面的分号改成英文的
作者: 菜鸟一号    时间: 2014-11-14 09:12
亲,997明显不能被3整除吧:L
作者: FlyFish    时间: 2014-11-14 11:23
小学数学是硬伤…………
作者: ◆﹎尛、言斤♀    时间: 2014-11-14 11:38
997能被3整除?
作者: 马个了黑_邓    时间: 2014-11-14 12:11
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.不要黑你数学老师。。。。
作者: Crazy_Eat_Code    时间: 2014-11-14 12:57
各种大神 学习了
作者: 陈国华    时间: 2014-11-14 14:33
类名每个单词首字母改为大写,培养好习惯很重要哦
作者: song395866365    时间: 2014-11-14 15:35
:lol研究研究
作者: yueyazhishang    时间: 2014-11-14 16:21
看了一下大家的代码有点水(不要喷我啊),我给你提供一种示范吧。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
学习了真不错。
作者: 记忆深处里    时间: 2014-11-14 19:50
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); // 如果是就打印出数字
                        }
                }
        }
}

这个我写的 感觉思路比较易懂 ,代码简单 .搂住看看
作者: javaAndroid    时间: 2014-11-14 20:31
代码没错,是你自己算错了,997不能被3整除。
但是为了提高效率,内层循环应该从2开始,包括2,一直到被检查的数字的一半
即外层循环当前数字的一半,不包括一半,包括了2就不需要包括了。
作者: Evred    时间: 2014-11-14 21:52
这是用来考验大家的智商的吗??
作者: 爱吃小土豆    时间: 2014-11-14 22:05
  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. }
复制代码


作者: striker    时间: 2014-11-14 22:33
呵呵!没有大问题
作者: 高昌德    时间: 2014-11-14 22:43
思想,,,真的很重要




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