黑马程序员技术交流社区
标题:
素数问题,请指导
[打印本页]
作者:
范建海
时间:
2015-1-18 11:59
标题:
素数问题,请指导
如果找从某个数m到n之间的素数,是从1到它本身吗?还是到根号它呢?
作者:
Novice.Jin
时间:
2015-1-18 12:30
你明白什么叫素数吗
作者:
sq_jun
时间:
2015-1-18 12:32
素数不就是只能被1和它本身整除嘛,从2开始判断,一直逐个整除到他本身前面一个数,只要能被整除就说明不是素数,否则就是素数,再打印出来就好了
作者:
范建海
时间:
2015-1-18 14:16
还得麻烦仁兄帮忙解释一下
作者:
sq_jun
时间:
2015-1-18 14:30
范建海 发表于 2015-1-18 14:16
还得麻烦仁兄帮忙解释一下
还有哪里不懂的
作者:
shenshuangxi
时间:
2015-1-18 22:17
从m开始遍历直到n,判断如果这个数如果只能被1和自身整除,那么这个数就是素数(用两个嵌套循环)
作者:
wdhm5423
时间:
2015-1-18 22:47
两中方法都是可以的。
这样理解:如果一个数n不是素数,那他肯定是两个因数相乘,有可能两个因数都大于√n吗?肯定不可能,要是都大于,那不就大于√n * √n=n了。所以如果n不是素数,那他肯定有一个因数<=√n。反过来,如果从1除到√n还没有整除的,那就是素数咯。所以两个方法只是时间问题,其实从1除到√n就可以了。当然,你要从1,到n也是行的。
作者:
史云龙
时间:
2015-1-18 23:14
代码是从素数的概念上来入手,大家还可以加上数学的判断思路
在一般领域,对正整数n,如果用小于或等于 的所有质数去除,均无法整除,则n为质数。
public class Demo{
public static void main(String[]args){
int m=10;
int n=20;
boolean flag=false;
for(int i=m;i<=n;i++){
for(int j=2;j<i;j++){
if(i%j==0){
System.out.println(i+"不是素数");
flag=false;
break;
}else{
flag=true;
}
}
if(flag){
System.out.println(i+"是素数");
}
}
}
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2