黑马程序员技术交流社区

标题: 关于求质数的问题,为什么运行没有结果呢 [打印本页]

作者: 爽朗的菜籽    时间: 2014-10-15 21:16
标题: 关于求质数的问题,为什么运行没有结果呢
  1. /*
  2. * 6、求三位数的质数
  3. * 思路:所谓指数就是指能被1和它本身整除的数
  4. *                 三位数范围 100-999
  5. */
  6. public class NumTest
  7. {
  8.         public static void main(String[] args)
  9.         {
  10.                 for(int i=100; i<1000; i++)
  11.                 {
  12.                         for(int j=2; j<=i/2; j++)
  13.                         {
  14.                                 if(i%j==0)
  15.                                 {
  16.                                         if(i==j)
  17.                                         {
  18.                                                 System.out.print(i+" ");
  19.                                         }else
  20.                                         {
  21.                                                 break;
  22.                                         }
  23.                                 }
  24.                         }
  25.                 }
  26.         }
  27. }
复制代码

作者: 哈达洋    时间: 2014-10-15 21:33
你的j值小于i/2,在后面判断的时候,i==j?这怎么可能嘛
作者: 无知的xiaopihai    时间: 2014-10-15 21:37
嗯,我觉得是楼主粘错了吧。。。。
作者: 康师傅-蛋黄派    时间: 2014-10-15 22:50
j<sqrt(i)就可以了,要执行System.out.print(i+" ")语句,则必须i==j,而外部的for循环,i!=j的
作者: nerveva2000    时间: 2014-10-15 22:53
  1. class Test
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 int n=0;
  6.                 for(int x=100;x<1000;x++)
  7.                 {
  8.                         n=0;
  9.                         for(int y=1;y<=x;y++)
  10.                         {
  11.                                 if(x%y==0)
  12.                                 {
  13.                                      n++;
  14.                                 }
  15.                         }
  16.                         if(n==2||n==1)
  17.                         {
  18.                                 System.out.print(x+" ");
  19.                         }

  20.                 }
  21.         }
  22. }
复制代码

作者: 爽朗的菜籽    时间: 2014-10-16 00:33
  1. public class NumTest
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 int count = 0;
  6.                 //既然是求三位数质数,那么范围在100-999之间
  7.                 for(int i=100; i<1000; i++)
  8.                 {
  9.                         //定义一个标记,用于标记素数
  10.                         boolean b = true;
  11.                         //j定义在2-i/2之间
  12.                         for(int j=2; j<=i/2; j++)
  13.                         {
  14.                                 //如果i能被j整除,那么说明i并不是素数,将b置为false,并且跳出整个循环,执行其他语句
  15.                                 if(i%j==0)
  16.                                 {
  17.                                         b = false;
  18.                                         break;
  19.                                 }
  20.                         }
  21.                         //通过判断b,如果是true说明,没有被整除过,即为素数
  22.                         if(b)
  23.                         {
  24.                                 if(count==5)
  25.                                 {
  26.                                         count=0;
  27.                                         System.out.println();
  28.                                 }
  29.                                 count++;
  30.                                 System.out.print(i+" ");
  31.                         }
  32.                 }
  33.         }
  34. }
复制代码

作者: FlyFish    时间: 2014-10-16 14:48
本帖最后由 FlyFish 于 2014-10-16 15:04 编辑

public class PrimeTest
{
        public static void main(String[] args)
        {
                 primeNum(100,1000);
        }
         public static void primeNum(int a,int b)
        {
                 for(int x=a ; x<b ; x++)
                 {
                         boolean bl=true;
                         for(int y=2 ; y<=x/2 ; y++)
                         {
                                if(x%y==0)
                                {
                                       bl=false;
                                       break;
                                }
                         }
                         if(bl)
                               System.out.print(x+"\t");
                 }
        }
}

作者: 奋斗的小孩    时间: 2014-10-16 20:44
本帖最后由 奋斗的小孩 于 2014-10-16 20:45 编辑

class Demo8{
      public static void main(String[] args){
          
      for(int x = 100;x<1000;x++){
          
           for(int y = 2;y<=x/2;y++){
                  
                     if(x%y==0){
                         
                         
                         break;
                         }
                  else if(y<x/2){
                  continue;
                  }else{
                  System.out.print(x);
                  }
                 System.out.println();
                  }
          

          
          }
          
                




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