java吧 关注:1,190,223贴子:12,601,189
  • 26回复贴,共1

求1-100所有质数的和。

只看楼主收藏回复

没有有大神啊,在线等,只要思路就可以。


IP属地:北京来自iPhone客户端1楼2016-03-23 17:49回复
    什么鬼?原谅我小学生,不知道什么是质数


    来自Android客户端2楼2016-03-23 18:00
    回复
      首先1既不是质数,也不是合数,用双层循环,外循环从1判断到100,内循环,用来判断是不是质数,设定一个除数,初始值为2,内循环每循环一次都加1,条件是小于需要判断的那个数,内循环里,加入if语句,用来判断该数是不是质数,在外循环里将判断的所有质数相加


      来自iPhone客户端3楼2016-03-23 18:17
      收起回复
        //1——100之内的质数的输出,与质数之和的结果
        public class TestZhiShu {
        public static void main ( String [] args){
        int result=0;
        for (int i=2;i<100;i++){
        boolean f = true;//f用来确定是不是质数
        for ( int j=2;j<i;j++){//判断质数的算法
        if(i%j==0){
        f=false;
        break;
        }
        }
        if(!f)continue;//如果还不不是要找的数那就接着继续
        System.out.print(" "+i);
        result=result+i;
        }
        System.out.println(" ");
        System.out.println("1——100以内质数之和为"+result);
        }
        }


        来自iPhone客户端4楼2016-03-23 21:43
        回复
          发个简洁版 单层循环效率高
          public class PrimeNumber {
          public static void main(String[] args) {
          int total=0;
          for(int i=2;i<100;i++){
          if(i%2!=0&&i%3!=0&&i%5!=0&&i%7!=0){
          total+=i;
          }
          }
          total+=2+3+5+7;
          System.out.println(total);
          }
          }


          5楼2016-03-23 22:21
          收起回复
            我记得有个Math.Sqrt可以用一下。。。


            IP属地:河北6楼2016-03-29 10:19
            回复
              public class TestPrimeNumber {
              public static void main(String[] args){
              int sum = 0;
              long start = System.currentTimeMillis();
              c:for(int i=2; i<=100; i++){
              //boolean flag = false;
              for(int j=2; j<=Math.sqrt(i); j++){
              if(i != j&&i % j == 0){
              //flag = true;
              //break;
              continue c;
              }
              }
              //if(!flag){
              System.out.println(i);
              sum++;
              //}
              }
              long end = System.currentTimeMillis();
              System.out.println(end-start);
              System.out.println(sum);
              }
              }


              IP属地:山东7楼2016-03-29 10:48
              回复
                这种问题一般是教程里的题目。
                所有,用现在的啥的,那还不如直接print(" 和是"+11134);
                这样了呢?
                我要告诉你的是,
                求1-100所有质数的和
                这句话的意思是。
                1 1-100所有质数。
                2 和
                题目不是重点,
                重点是你要学会分解。


                IP属地:广东8楼2016-03-29 18:57
                回复
                  筛法求素数


                  IP属地:江苏来自Android客户端10楼2016-03-30 09:40
                  回复
                    public class G{
                    public static void main(String[] args){
                    int sum=0;
                    for(int a=2;a<=100;a++){ //确定a的范围,从2到100逐个试
                    int b=2;
                    while(a%b!=0){ //如果b对a取余不是0,继续(b的范围从2到a),直到a%b==0时跳出循环
                    b++;
                    }
                    if(b==a){ //如果取余是0的话,判断b等不等于a,等于就是质数,不等就是合数,这步最精彩
                    if(a==2){
                    System.out.print(a); //这里区分2或不是2的原因看下面注释
                    }else{
                    System.out.print("+"+a); //b==a时,a为质数 ,把a的值输出出来
                    }
                    sum+=a; //sum=sum+a,将输出的a(即质数a)的值累加
                    }
                    }
                    System.out.print("="+sum);
                    }
                    }/*b虽然没有范围,但b=a时a%b必等于零,所以b的范围是2到a
                    最里边的的if语句只是个人想实现2+3+5...=1060的效果
                    这个看你个人喜好,你也可以把它去掉,直接输出a的值
                    */


                    IP属地:陕西13楼2016-03-30 10:37
                    回复
                      有发帖这时间直接百度早都找到了


                      IP属地:宁夏14楼2016-04-02 11:46
                      回复