刚学习for语句,有个作业是要我们判断一个数是素数还是合数,我的思路是用这个数除以j(j=2)若不为0 j++一直到n==j-1 break 不过不知道在for语句中用上if语句,让满足上面条件的就是素数 ,否则就是合数  大家请指点一下  最好说下思路和语法规则  我自己去写  谢谢

解决方案 »

  1.   

    public class Alone4_5{
    public static void main(String[] args){
    for (int n=26,j=2; n%j!=0;j++){

    if (j==(n-1))break;
    System.out.println("n是素数");
    }
    System.out.println("n是合数");
    }
    } 这是我写的代码 貌似也可以判断是素数还是合数,不过总觉得有点疑惑,谁可以把程序的流程说一下                              
      

  2.   

    我的代码写的不对。。谁可以告诉我在 for语句中怎么添加if 语句??
      

  3.   

    public class Alone4_5{ 
    public static void main(String[] args){
    double n=26;
    double m= Math.sqrt(n)+1; 
    for (int i=2; i<=m;i++){ if (n%i==0)break; 
    System.out.println("n是素数"); 

    System.out.println("n是合数"); 


     
      

  4.   

    //求100以内素数简便的方法
    out:for( int i = 3; i <= 100; i++ )
    {
    for( int j = 2; j < i; j++ )
    {
    if( i % j == 0 )
    {
    continue out;
    }
    }
    System.out.println(i);
    }
    }
      

  5.   

    真巧! 我刚刚才写了一个打印素数的小程序,你可以点击我的csdn博客查看http://blog.csdn.net/zhuche110/archive/2008/03/30/2230326.aspx
      

  6.   

    下面是我在博客上的代码。
    /*
        打印3-200之间的素数
        2008年3月3日
        
    */
    class IsPrime
    {
        public static void main(String[] args)
        {
            int j;
            int i;
            int counter=0;
            final int N=300; 
            //int k=(int)Math.sqrt(j);
            
            for(j=3;j<N;j++)
            {
                boolean isPrime=true;
                for(i=2;i<=(int)Math.sqrt(j);i++)
                    {
                        if (j%i==0) 
                            {
                                isPrime=false;
                                break;
                            }
                    }
                  
                if(isPrime==true) 
                        {
                            System.out.print(" "+j);
                            counter++;
                            if(counter%10==0)System.out.println();//每10个换行
                        }
                
                }
                
            System.out.println("在 0到"+N+"之间共有 "+counter+" 个素数");
            }
         
    }
    本文出处:http://blog.csdn.net/zhuche110/archive/2008/03/30/2230326.aspx
      

  7.   

    public class Alone4_5{
    public static void main(String[] args){
     boolean b=true;
    for(int n=27,j=2;n%j!=0;j++){
    if(j==Math.sqrt(j))break;
    b=true;
    }
    if(b==false){
    System.out.println("n是素数");
    }
    else{
    System.out.println("n是合数");
    }
    }
    }我自己的代码,大家应该可以看出我是什么程度,但我无论输入什么数字都显示合数,我想思路还是对了 ,就是语法有问题,请各位指导一下  谢谢 
      

  8.   

    呵呵 那就给分哦。欢迎访问我的博客http://blog.csdn.net/zhuche110/
    一起进步吧 ^_^
      

  9.   

    整个代码,根本没有b赋值为false的语句,当然肯定为true了,而且if(j==Math.sqrt(j))等于白写,(j==Math.sqrt(j))肯定为false.
    按照LZ的意思写个看看
    public class Alone4_5
      { 
       public static void main(String[] args)
         {
          int n=xxx;//xxx为任意整数
          int k=(int)(Math.sqrt(n)+1);//将Math.sqrt(n)+1强制转化为int型并赋给k
          for(int i=2;i<=n;i++)
            {
             if(n%i==0&&n!=2)//如果整除且不为n不为2,打印结果并且退出循环.
               {
                System.out.println(n+"是合数");
                break;
                }
             if(i==k||n==2)//如果n为2或者i已经达到k这个值,还没有退出循环,那么肯定为素数,打印结果,并且退出循环
                {
                System.out.println(n+"是素数");
                break;
                }
            }
          }
       }
    由于是从2开始循环,对2的判定比较麻烦,以上的例子还是有点为了结果而写
    按下面的写法可能会好一点
    public class Alone4_5
      { 
       public static void main(String[] args)
         {
          int n=xxx;//xxx为任意整数
          int k=(int)(Math.sqrt(n)+1);//将Math.sqrt(n)+1强制转化为int型并赋给k
         if(n==2) {System.out.println(n+"是素数");//首先判定是否为2,不是2则转入else
         else{
          for(int i=2;i<n;i++)
            {
             if(n%i==0)//如果整除且不为n不为2,打印结果并且退出循环.
               {
                System.out.println(n+"是合数");
                break;
                }
             if(i==k)//如果i已经达到k这个值,还没有退出循环,那么肯定为素数,打印结果,并且退出循环
                {
                System.out.println(n+"是素数");
                break;
                }
             }
            }
          }
       }
          
      

  10.   

    谢谢!不过我的疑问是 为什么要加break?