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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 我是三星 中级黑马   /  2015-9-13 23:17  /  3542 人查看  /  15 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

1黑马币
题目:判断101-200之间有多少个素数,并输出所有素数。
程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。
public class Prog2{
        public static void main(String[] args){
                int m = 1;
                int n = 1000;
                int count = 0;
                //统计素数个数
                for(int i=m;i<n;i++){
                        if(isPrime(i)){
                                count++;
                                System.out.print(i+" ");
                                if(count%10==0){
                                        System.out.println();
                                }
                        }
                }
                System.out.println();
                System.out.println("在"+m+"和"+n+"之间共有"+count+"个素数");
        }
        //判断素数
        private static boolean isPrime(int n){
                boolean flag = true;
                if(n==1)
                  flag = false;
                else{
                        for(int i=2;i<=Math.sqrt(n);i++){
                        if((n%i)==0 || n==1){      \\此处如果换成if(n%==0)输出结果与原来一致,想问一下  || n==1 在这里的作用?
                                flag = false;      
                                break;
                        }
                         else
                           flag = true;
                  }
                }
                return flag;
        }
}



最佳答案

查看完整内容

你把代码格式写清楚点读起来就会清楚了,那里不需要n==1, if(n==1) { flag=false; } else { //这里边怎么可能n==1,这不就是if..else语句块么 }

15 个回复

倒序浏览
你把代码格式写清楚点读起来就会清楚了,那里不需要n==1,
if(n==1)
{
    flag=false;
}
else
{
   //这里边怎么可能n==1,这不就是if..else语句块么
}
回复 使用道具 举报
我认为没有作用 多余  如果n为1不会判断到这一步
回复 使用道具 举报
此处 n==1 没有任何用,因为上面在 if 中已经判断了 n==1,如果 n=1了那么是不会到这个方法中的,所以再判断 n==1是无用的
回复 使用道具 举报
如果上面没有if(n==1)的判断  这儿是需要|| n==1的,因为1既不是素数也不是合数。所以是需要判断的,但是你前面已经判断了。所以下面就不用再判断了。希望您能采纳,临近考试我的黑马币还很少。十分需要啊
回复 使用道具 举报
上面判断过一次 所以没有用
回复 使用道具 举报
kime 中级黑马 2015-9-14 11:37:32
7#
n==1没有作用
回复 使用道具 举报
a334 中级黑马 2015-9-14 20:10:32
8#
理论上讲,那个位置 n已经是不等于1了~~因为上面判断 n==1 不成立 然后跳到else语句里去了
回复 使用道具 举报
/**为什么你要这样玩。需求分析是从课本上面弄下来的,还是老师固定成这样的需求分析。  我看你代码的时候一开始都没有看懂。
*/
/**
n==1  当然是没有用的,前面已经进行了判断.当n=1时,你程序设计就是已经开始跳到返回(return)这里来了。
*/
//程序分析:判断素数的方法,获取一个数值,然后将这个数值除以1和它本身之外的值。
public class Prog2{
        public static void main(String[] args){
                int count = 0;
                //统计素数个数
                for(int i=1;i<1000;i++){
                        if(isPrime(i)){
                                count++;
                                System.out.print(i+" ");
                                if(count%10==0){
                                        System.out.println();
                                }
                        }
                }
                System.out.println("在1和1000之间共有"+count+"个素数");
        }
        //判断素数
        private static boolean isPrime(int n){
                boolean flag = false;
                if(n>1){
                        for(int i=1;i<n;i++){
                                if(i!=1){
                                        if(n%i == 0){
                                                flag = false;
                                                break;
                                        }else if(n == ++i){
                                                flag = true;
                                        }
                                }
                        }
                }
                return flag;
        }
}
回复 使用道具 举报
n==1的意思就是:当传入的参数为1时,直接判定这是素数。
回复 使用道具 举报
就是可以的啊    你注释符号错了   第二十六行
回复 使用道具 举报
fengchaohui 发表于 2015-9-16 23:40
就是可以的啊    你注释符号错了   第二十六行

还有n==1没用啊
回复 使用道具 举报
代码有点长
回复 使用道具 举报
在这里没有用  
自己做了一下上面的题目
        int m = 0;
                for (int i = 101; i < 201; i++) {
                        for (int j = 2; j < i/2+1; j++) {
                                if((i%j == 0)){                                  
                                          break;
                                }
                                if(j == (i/2))  m++;
                        }
                }
                System.out.println("一共:" + m + "  个素数");
回复 使用道具 举报
如果上面没有if(n==1)的判断  这儿是需要|| n==1的,因为1既不是素数也不是合数。所以是需要判断的,但是你前面已经判断了。所以下面就不用再判断了。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马