繁体   English   中英

得到了break语句,但是无法找出Java的条件

[英]Got the break statement to work, but can't figure out the java for condition

我正在尝试找出如何从1到101进行素数运算。到目前为止,我已经做到了:

public class BreakShow{
  public static void main(String[] args){
  int i;
  int prime;

  System.out.println("Prime numbers from 1 to 101 : ");
    for (i = 1;i < 102;i++ ){
        for (prime = 2;prime < i;prime++ ){
            if(i % prime == 0) {
                break;
            }
        }
        if(i == prime) {
            System.out.print("  " + i);
        }
    }
  }
}

我无法打印出1。我尝试更改i和prime的值,但是它不起作用。 似乎与印刷品相关联,并且没有继续。 我想我不太了解for语句的条件及其运行方式。

发生的是,当i = 1时(当您测试1的情况时),此循环:

for (prime = 2;prime < i;prime++ ){
    if(i % prime == 0) {
        break;
    }
}

永远不运行,因为prime实际上从不小于i,因为prime从2开始。这意味着它然后检查i == prime,因为prime = 2,所以它永远不会。

主变量初始化为值2,但您正在检查1 == 2。

您可以在条件满足之前测试值i和素数

System.out.println("i:: "+ i+ "  prime:: "+prime);
    if(i == prime) 
        {
            System.out.print("  " + i);
        }

so if clause  does not meet the condition 

Java知道1不是质数,因此不打印它。

Google的前两个结果“是1是质数”证明了这一点。

如果您想用Prime做嘶嘶声,那么您只需要一个循环并以2调制即可。您可以做这样的事情。

for(int i = 1; i <= 101; i++){
   if( (i%2) != 0) // use the smallest even number to check against.
      println("prime");
}

由于第二个for循环从2开始,因此由于i==prime条件而在打印前跳过1。 如果您确实要打印1,请按如下所示更新条件:

     public static void main(String[] args) {
          int prime;
          System.out.println("Prime numbers from 1 to 101 : ");
            for (int i = 1;i < 102;i++ ){
                for (prime= i-2;prime > 1;prime-- ){
                    if(prime< 0 || i % prime == 0) {
                        break;
                    }
                }
                if(prime < 0 || prime==1) {
                    System.out.print("  " + i);
                }
           }
      }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM