import java.util.Scanner;
public class panduan
{
public static void main(String[] args)
{
int b;
Scanner sc=new Scanner(System.in);
b=sc.nextInt();
for (int i=2;i<=b ;i++ )
{boolean flag=true;
         for (int j=2;j<i ;j++ )
         {if (i%j==0)
         {flag=false;
 System.out.println(b+"不是素数");
 break;
         }
 if (flag)
 {
 System.out.println(b+"是素数");
 }
         }
}
}
}
不知道是那错了,还是自己的思路本来就有问题?

解决方案 »

  1.   

    思路有问题
    你的代码是找到2-b之间的素数,不是判断b是不是素数
    boolean flag=true;
    for (int i=2;i<b ;i++ ) {
        if (b%i==0) { //用b%i来判断b有没有可以被整除的因数
           flag=false;
           System.out.println(b+"不是素数");
           break;
        }
    }
    if (flag) {
       System.out.println(b+"是素数");
    }
      

  2.   


    boolean flag=true;
    for (int i=2;i<b ;i++ ) { //因为是从2开始循环的,输入1或0时,不会进入循环
        if (b%i==0) { //用b%i来判断b有没有可以被整除的因数
           flag=false;
           //System.out.println(b+"不是素数");
           break;
        }
    }
    if (b == 0 || b == 1) { //所以这里加上0和1的判断
        System.out.println(b+"既不是素数也不是合数");
    } else if (flag) {
       System.out.println(b+"是素数");
    } else {
        System.out.println(b+"不是素数");
    }