public class Demo { public static void main(String[] args) {
//打印输出50以内的所有素数
for(int i = 2;i <=50;i++){
for(int j = 2;j <= i/2;j++){
if(i % j == 0){
break;
}
if(j > i/2){
System.out.println(i + "是素数");
}
}
}
}
}

解决方案 »

  1.   


    public class Demo { public static void main(String[] args) { 
    //打印输出50以内的所有素数 
    boolean  f = true;
    for(int i = 2;i <=50;i++){ 
    f=true;//假设每一个都是
    for(int j = 2;j <= i/2;j++){ 
    if(i % j == 0){ 
    //到这里表示不是素数
    f=false;
    break; 


    if(true){ 
    System.out.println(i + "是素数"); 



    }打印的位置不太对
      

  2.   

    for(int j = 2;j <= i/2;j++){
    if(i % j == 0){
    break;
    }
    if(j > i/2){
    System.out.println(i + "是素数");
    }
    } 这里 j不可能会大于i/2啊
      

  3.   

    改成这样:public class Demo {  public static void main(String[] args) { 
    int j=0;

    for(int i = 2;i <=50;i++){ 

    for(j = 2;j <= i/2;j++){ 
    if(i % j == 0){ 
    break; 



    if(j > i/2){ 
    System.out.println(i + "是素数"); 



    }
      

  4.   


    if(j > i/2){ 
                    System.out.println(i + "是素数"); 
                } 放到内层循环的外面就可以了,
    并且要把int j定义在主方法中
      

  5.   

    public static void main(String[] args) { 
    //打印输出50以内的所有素数 
    for(int i = 2;i <=50;i++){ 
        for(int j = 2;j <= i/2;j++){ 
             if(i % j == 0) 
                  break;

     
        if(j > i/2)
              System.out.println(i + "是素数"); 
     } 

    }
    搞那么多括号干吗,打印的那段代码放错位置了,要等内循环完了才能进行判断啊!
      

  6.   


    //检验是否是素数的方法checkPrime(int a),a为要判断的数
    public boolean checkPrime(int a){
    boolean b = true;

    //如果是1,排除
    if(a == 1){
    b = false;
    }

    //用a除以所有比它小的数(除了1),如果能整除,返回不是素数
    for(int i=2;i<a;i++){
    if(a%i == 0){
    b = false;
    break;
    }
    }
    return b;
    }
      

  7.   

    上面把i<a改成i<a/2呵呵
      

  8.   

    可以改成
    public class Demo { public static void main(String[] args) {
    //打印输出50以内的所有素数
    for(int i = 2;i <=50;i++){
    boolean b = true;//判断当前i是否为素数的布尔值b,默认为是。
    for(int j = 2;j <= i/2;j++){
    if(i % j == 0){
    b = false;//如果可以除尽,说明不是。
    break;
    }
    }
    if(b){
    System.out.println(i + "是素数");//是就输出
    }
    }
    }
    }你原来那个在for(int j = 2;j <= i/2;j++){}里是不可能出现j > i/2的,o(╯□╰)o
      

  9.   


    public static void printPrimeNumber() {
    int count = 50;
    System.out.println("1到" + count + "以内的质数有:");
    // 因为1既不是质数也不是合数,所以从2开始判定。
    for (int i = 2; i < count; i++) {
    boolean b = true;
    for (int j = 2; j < i; j++) {
    // for循环第一次:判断出2是质数。
    // for循环排除情况:除了它自身和1的乘积以外,能表示为其它任何2个正整数的乘积。
    if (i % j == 0) {
    b = false;
    break;
    }
    }
    if (b) {
    System.out.print(i + "\t");//

    }
    }