101到200之间的素数 java第二个 if(i/2 - 1 == j) 求指教!
来源:学生作业帮助网 编辑:六六作业网 时间:2024/11/15 12:44:03
101到200之间的素数 java第二个 if(i/2 - 1 == j) 求指教!
101到200之间的素数 java
第二个 if(i/2 - 1 == j) 求指教!
101到200之间的素数 java第二个 if(i/2 - 1 == j) 求指教!
你那句话“if(i/2 - 1 == j)”表示的原因就如你注释所说,输出素数,但我知道这样你理解不了.这么说吧,你的程序是用循环相除来遍历判断的,但是给你举个例子,如果101都不能被50整除了,那么我们还用考虑101能不能被51或者52或者53整除吗?当然不用考虑,因为101的一半已经是能得到整数商的最小值2了,对吧?而当我判断除数的时候,从2开始到3,4,5,6...48,49,到什么时候为止呢?自然是到50为止对不对?因为如果101加入不能被所有这些1到50的数整除,是不是就说明101不可能被任何数整除了?所以101就是素数了吧.
其实你这个算法不算太好,我给你一个我的程序,这个简单点,好理解,也比你的算法更优化,程序中的temp是200开根号,之所以这么做,是因为200以内的数如果不能被1到200开根号之间的数整除,那么这个数就是素数:
public static void primeNumber(int start, int end) {
int temp = (int)Math.sqrt(end);
int sum = 0;
for(int i = start; i <= end; i++) {
int j = 2;
for(; j <= temp; j++) {
if(i % j == 0)
break;
}
if(j > temp) {
sum++;
System.out.println(i + " ,");
}
}
System.out.println("Prime number are " + sum);
}
public static void main(String[] args) {
primeNumber(101, 200);
}