黑马程序员技术交流社区
标题:
求大神解答啊
[打印本页]
作者:
JYcainiao
时间:
2015-10-17 20:58
标题:
求大神解答啊
//求出101-200之间的素数的个数,并打印出来
/*
思路 首先 素数不能被除1和本身意外的任何数整除 除数定义为num
1.除数从2----num-1 被除数定义为a 当num能被a整除时,结束当前循环 当num不能被a整除时,a+1 以此类推 直到 a= num-1
当同时满足 num % a != 0 && a == num/2 时,打印该数字, 计数器+1
简化 因为一个数除1和它自身外,最大的因数不会num/2还大,所以定义 a<=num/2
*/
class Sushu {
public static void main(String[] args) {
int connt = 0; //定义一个计数器,变量名为connt 用来记录素数的个数
System.out.println("101-200之间的素数有");
for (int num = 101; num<=200; num++) {
for (int a = 2; a<=num/2; a++) { //定义一个数字,从2开始 因为素数不能被除1和本身意外的任何数整除
if (num % a == 0) { //如果num能被2整除,直接结束该次循环 a+1
break;
//这里这个为啥不能用continue啊?
}
if (num % a != 0 && a == num/2) { //如果num一直不能被a整除,并且a自增至num/2 可以证明这个数字为素数
System.out.print(num+","); //打印这个数字
connt++; //计数器+1
}
}
}
System.out.println();
System.out.println("素数的个数为:"+connt);
}
}
作者:
ddsx
时间:
2015-10-18 00:01
continue 结束本次循环,继续下次循环,没跳出啊
作者:
往事如风555
时间:
2015-10-18 00:25
楼主,你试除的范围还是太大了,从2比到num的平方根为止即可。比如要算10000以内的素数,只需比2到100,不需要比到5000的。这样提高效率。
//程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),
//如果能被整除, 则表明此数不是素数,反之是素数。
public class ShuShu {
public static void main(String[] args) {
int n = 0;
for (int i = 1; i <= 100; i++) {
if (isPrime(i)) {
System.out.println(i);
n++;
}
}
System.out.println("素数的个数是:"+n);
}
// 判断素数的方法,如果是素数,返回true。
private static boolean isPrime(int n) {
if (n >= 1 && n <= 3) {
return true;
} else {
for (int i = 2; i <= Math.sqrt(n); i++) {
if (n % i == 0) {
return false;
}
}
}
return true;
}
}
作者:
往事如风555
时间:
2015-10-18 00:29
看错题,我算的是1-100的。将循环改为 int i = 101; i <= 200;i++
作者:
JYcainiao
时间:
2015-10-18 13:02
往事如风555 发表于 2015-10-18 00:25
楼主,你试除的范围还是太大了,从2比到num的平方根为止即可。比如要算10000以内的素数,只需比2到100,不 ...
被除数自增到除数的一半吧,平方根当然更好,但是还没学到那里呢……不会算平方根……
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2