永发信息网

java程序1到200的质数。代码如下

答案:4  悬赏:40  手机版
解决时间 2021-01-17 19:28
  • 提问者网友:你挡着我发光了
  • 2021-01-16 23:23
java程序1到200的质数。代码如下
最佳答案
  • 五星知识达人网友:大漠
  • 2021-01-16 23:45
你的用的算法判断逻辑是没错,但是效率太低,而且重点是你的sum是int数据类型,乘积累积到一定的数值时会发生溢出,如果你懒得换算法的话,可以把sum改成double类型就行了。
全部回答
  • 1楼网友:舊物识亽
  • 2021-01-17 01:41
3楼 楼主明显还是初学者 ,未必看的懂你写的,估计集合都还没学过呢 , 对于新手来说 加个标记最容易理解了,就像1楼的写法
  • 2楼网友:毛毛
  • 2021-01-17 01:05

一个好的算法,要经的起推敲,不要只求结果import java.util.ArrayList;
import java.util.List;
public class Primes {
    public static void main(String[] args) {
        // 求素数
        List primes = getPrimes(200);
        // 输出结果
        for (int i = 0; i < primes.size(); i++) {
            Integer prime = primes.get(i);
            System.out.printf("%8d", prime);
            if (i % 10 == 9) {
                System.out.println();
            }
        }
    }
    
    private static List getPrimes(int n) {
        List result = new ArrayList();
        result.add(2);
        for (int i = 3; i <= n; i += 2) {
            if (!divisible(i, result)) {
                result.add(i);
            }
        }
        return result;
    }
    
    private static boolean divisible(int n, List primes) {
        for (Integer prime : primes) {
            if (n % prime == 0) {
                return true;
            }
        }
        return false;
    }
}
  • 3楼网友:零点过十分
  • 2021-01-16 23:59

看起来是溢出,因为素数的61时候,sum的值会可能大于它的最大范围的//程序修改

public class Computer {
    
    public static void main(String[] args){
        //求1到200的质数
    
      for(int i=2;i<201;i++) {
              
           int sum=0;
           
           for(int j =2;j              if(i%j==0){
                  sum = 1;
                  break;
              }
           } 
           
           if(sum==0){
            System.out.println(i+"是质数");
           }
           
          }
    
    }
}
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯