A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 范建海 中级黑马   /  2015-1-18 11:59  /  1707 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

如果找从某个数m到n之间的素数,是从1到它本身吗?还是到根号它呢?

7 个回复

倒序浏览
你明白什么叫素数吗
回复 使用道具 举报
素数不就是只能被1和它本身整除嘛,从2开始判断,一直逐个整除到他本身前面一个数,只要能被整除就说明不是素数,否则就是素数,再打印出来就好了
回复 使用道具 举报
还得麻烦仁兄帮忙解释一下
回复 使用道具 举报
范建海 发表于 2015-1-18 14:16
还得麻烦仁兄帮忙解释一下

还有哪里不懂的
回复 使用道具 举报
从m开始遍历直到n,判断如果这个数如果只能被1和自身整除,那么这个数就是素数(用两个嵌套循环)
回复 使用道具 举报
两中方法都是可以的。
这样理解:如果一个数n不是素数,那他肯定是两个因数相乘,有可能两个因数都大于√n吗?肯定不可能,要是都大于,那不就大于√n * √n=n了。所以如果n不是素数,那他肯定有一个因数<=√n。反过来,如果从1除到√n还没有整除的,那就是素数咯。所以两个方法只是时间问题,其实从1除到√n就可以了。当然,你要从1,到n也是行的。
回复 使用道具 举报
代码是从素数的概念上来入手,大家还可以加上数学的判断思路
在一般领域,对正整数n,如果用小于或等于 的所有质数去除,均无法整除,则n为质数。
  1. public class Demo{
  2.         public static void main(String[]args){
  3.                 int m=10;
  4.                 int n=20;
  5.                 boolean flag=false;
  6.                 for(int i=m;i<=n;i++){
  7.                         for(int j=2;j<i;j++){
  8.                                 if(i%j==0){
  9.                                         System.out.println(i+"不是素数");
  10.                                         flag=false;
  11.                                         break;
  12.                                 }else{
  13.                                         flag=true;
  14.                                 }
  15.                         }
  16.                         if(flag){
  17.                                 System.out.println(i+"是素数");
  18.                         }
  19.                 }
  20.         }
  21. }
复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马