java 求素数的程序中有一处不理解 急求解释
publicstaticvoidmain(String[]args){//素数即质数intcount=0;for(inti=101;i<200;i+=2){boolean...
public static void main(String[] args) {//素数即质数
int count = 0;
for(int i=101; i<200; i+=2) {
boolean b = false;
for(int j=2; j<=Math.sqrt(i); j++){
if(i % j == 0) {
b = false;
break;
} else {
b =true;
}
if(b == true) {
count ++;
System.out.println(i);
}
}
System.out.println( "素数个数是: " + count);
}
为什么这里第二个if从句里面的内容count ++;System.out.println(i);不能直接写在else从句 b =true; 的后面呢??? 展开
int count = 0;
for(int i=101; i<200; i+=2) {
boolean b = false;
for(int j=2; j<=Math.sqrt(i); j++){
if(i % j == 0) {
b = false;
break;
} else {
b =true;
}
if(b == true) {
count ++;
System.out.println(i);
}
}
System.out.println( "素数个数是: " + count);
}
为什么这里第二个if从句里面的内容count ++;System.out.println(i);不能直接写在else从句 b =true; 的后面呢??? 展开
3个回答
展开全部
你的第二个if位置不对
public static void main(String[] args) {
int count = 0;
for (int i = 101; i < 200; i += 2) {
boolean b = true;
for (int j = 2; j <= Math.sqrt(i); j++) {
if (i % j == 0) {
b = false;
break;
}
}
if (b) {
count++;
System.out.println(i);
}
}
System.out.println("素数个数是: " + count);
}
给你个我以前写过的。
public class $ {
public static void main(String[] args) {
int count = 0;
for (int i = 101; i <= 200; i++) {
if (i == 1) {
System.out.println("1不是素数也不是合数.");
continue;
}
if (check(i)) {
System.out.println(i);
count++;
}
}
System.out.println("素数个数:" + count);
}
private static boolean check(int num) {
int sqrt = (int) Math.sqrt(num);
for (int j = 2; j < sqrt + 1; j++) {
if (num % j == 0) {
return false;
}
}
return true;
}
}
追问
你好 谢谢你以前的程序,这种直接调用方法的的确可以免除歧义。我写的程序第二个if前面应该是两个大括号的,提交问题的时候才发现少写了一个。现在你是否能帮我解答我之前不理解的地方呢?
追答
如果你想将
count++;
System.out.println(i);
放到else里面,
你先考虑下?第二个for是干什么的?是判断i是不是素数,从2 一直到 i的开方,在这里你count++合适么? 就算i是素数,那么count+1就可以了,所以,这两行要放到 第二个for的外面。
教你个笨的看代码的方法:用实际的数据,一行一行的走代码,每一行的变量会是什么值,都写出来,慢慢的就理解了。或者用eclipse debug一行行看也行。
试试吧
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询