[英]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.