本人JAVA新手,经常有小问题不明白,想拜个师傅,水平高的或者跟我一样菜的都可以,比我高的就学习,跟我差不多的就共同进步。
我问的问题不会很烦,都是些简单问题。估计不会超过QQ的聊天框好心人帮帮,谢谢
QQ;150090669 我的问题:求100到200之间的质数。 public class Zhishu { public static void main(String[] args) {
for(int i=100;i <200;i++){
outer:for(int j=2;j <i;j++){
if(i%j==0)break outer;
System.out.println(i);
}
} } } 不是已经break outer了吗?怎么里面的循环还在做??
我问的问题不会很烦,都是些简单问题。估计不会超过QQ的聊天框好心人帮帮,谢谢
QQ;150090669 我的问题:求100到200之间的质数。 public class Zhishu { public static void main(String[] args) {
for(int i=100;i <200;i++){
outer:for(int j=2;j <i;j++){
if(i%j==0)break outer;
System.out.println(i);
}
} } } 不是已经break outer了吗?怎么里面的循环还在做??
for(int i=100;i <200;i++){
outer:for(int j=2;j <i;j++){
if(i%j==0)
{
break outer;
}
System.out.println(i);
}
}
} 把代码规范一下,就是这样了。
public class Zhishu { public static void main(String[] args) {
for(int i=100;i <200;i++){
outer:for(int j=2;j <i;j++){
if(i%j==0)break outer;
System.out.println(i);
}
} } } 没有什么问题啊.
首先是i=100;j从2开始,所以不会输出100;然后是i=101,为2-100之间没有数与101求余为0,所以一直输出
首先可以把所有的偶数排除了.
101,103,105(因为j是2-104,中间的3与105求余为0,所以只会输出1个105)
以此类推.......
for (int i = 101; i <= 200; i+=2) {
boolean f=true;
for (int j = 2; j < i; j++) {
if(i%j==0)
{
f=false;
break;
}
}
if(f)
{
System.out.println(" "+i);
}
}
public class Zhishu { public static void main(String[] args) {
int count=0;
for(int i=100;i <200;i++){
count=0;
outer:for(int j=2;j <i;j++){
if(i%j==0)
{
System.out.println(i+"与"+j+"求余为0!共输出"+i+"-----"+(count)+"次");
count=0;
break outer;
}
count++;
System.out.print(i+",");
}
if(count!=0)
{
System.out.println("\n共输出"+i+"-----"+(count)+"次");
}
} } }
你的代码:在i%j==0后break,这样当i为某一个值的时候,j虽然不停的改变,但是i%j!=0次数会有很多,所以会打印很多次 修改如下:
for(int i=100;i <200;i++){
outer:for(int j=2;j <i;j++){
if(i%j!=0){
System.out.println(i);
}
break outer; //不管是不是质数都要退出.这里只是退出本层次的循环,所以outer要不要无所谓,
//如果你想退出最外面的循环,那就需要用循环标识了
}
}
你这个是给他调试用的吧?!那句输出执行了N多遍。
给楼主来个简单的吧:
public class Prime {
public static void main(String args[]){
int count = 0;
for (int i=100; i<=200; i++){
for (int j=2; j<(int)Math.sqrt(i); j++){
if (i%j == 0){
break;
}
else{
System.out.println(i);
count ++;
break;
}
}
}
System.out.println("Total: "+ count);
}
}
public class Prime {
public static void main(String args[]){
int count = 0;
for (int i=101; i<=200; i+=2){
int k = (int)Math.sqrt(i)+1;
for (int j=2; j<=k; j++){
if (i%j == 0)
break;
if (j >= k){
System.out.print(i +", ");
count ++;
}
}
}
System.out.println("\nTotal: "+ count);
}
}
101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151, 157, 163, 167, 173, 179, 181, 191, 193, 197, 199,
Total: 21
for(int i=100;i <200;i++){
int j=-1;
for(j=2;j <i;j++){
if(i%j==0)//任何一个求余为0就退出里边循环.
break;
}
if(i==j)//表示里边的循环是j==i是才跳出的,也就是2--->i-1都与i求余为不为0
{
System.out.println(i);
}
} } }