//判断是否是素数
public class m {
final int MAX=100;
int j=3;
public boolean isprime(int number){
boolean yes=true;
while(j<=Math.sqrt(number)&&yes){
if(number%j==0)
yes=false;
else
j+=2;
}
return yes;
}
public static void main(String args[]){
m n=new m();
int k=3;
System.out.print("\t"+2);
while(k<100){
if(n.isprime(k))
System.out.print("\t"+k);
k+=2;
}
}
}
这里我把int j=0;放在isprime方法外和方法内,结果很不同,这是为什么?我觉得应该结果一样的?高手赐教
public class m {
final int MAX=100;
int j=3;
public boolean isprime(int number){
boolean yes=true;
while(j<=Math.sqrt(number)&&yes){
if(number%j==0)
yes=false;
else
j+=2;
}
return yes;
}
public static void main(String args[]){
m n=new m();
int k=3;
System.out.print("\t"+2);
while(k<100){
if(n.isprime(k))
System.out.print("\t"+k);
k+=2;
}
}
}
这里我把int j=0;放在isprime方法外和方法内,结果很不同,这是为什么?我觉得应该结果一样的?高手赐教
虽然你的变量j只是在isprime()中使用了,但是你在main()中使用了for循环多次调用了这个isprime()方法,所以变量应该定义成全局的,而不是局部的。应该就这意思了吧~~
全局变量和局部变量作用域范围不一样,CSDN的注册用户应该都知道,但是程序执行循环时,每次都调用进行调用相关值,在程序执行过程中值会变化,这是就体现全局变量和局部变量的区别,所以4楼正解。