• 利用数组下标对应指定范围内的质数,利用数组布尔类型值标志是否为质数


     1 package com.jdk7.chapter4;
     2 
     3 public class PrimeNumber {
     4     public void getPrime(int range){
     5         boolean[] sourceData = this.isPrime(range);
     6         
     7         if(!(sourceData==null)){
     8             int size = sourceData.length;
     9             Integer[] resultData = new Integer[size];
    10             //number定义要放在自增运算循环外,否则可能达不到预期效果
    11             int number = 0;
    12             for(int i=1;i<size;i++){
    13                 if(sourceData[i]){
    14                     resultData[i] = i;
    15                     System.out.print("素数["+i+"] :"+resultData[i].toString()+" ");
    16                     if(++number % 10 == 0){
    17                         System.out.println();
    18                     }
    19                 }
    20             }
    21             System.out.println();
    22             System.out.println("质数总个数为: "+number);
    23         }
    24     }
    25     
    26     private boolean[] isPrime(int range){
    27         boolean[] tag = new boolean[range+1];
    28         if(range<=0){return null;}
    29         for(int i=1;i<range+1;i++){
    30             if(i==1){
    31                 tag[i] = false;
    32             }else{
    33                 tag[i] = true;
    34                 }
    35         }
    36         //假设tag[i]为质数,则质数的倍数一定为非质数
    37         int sqrt = (int)Math.sqrt(range);
    38         for(int i=1;i<=sqrt;i++){
    39             if(tag[i]){
    40                 for(int j=(2 * i);j<=range;j+=i){
    41                     tag[j] = false;
    42                 }
    43             }
    44         }
    45         return tag;
    46     }
    47 }
     1 package com.jdk7.chapter4;
     2 
     3 public class PrimeNumberTest {
     4     public static void main(String[] args) {
     5         PrimeNumber pn = new PrimeNumber();
     6         int range = 100;
     7         pn.getPrime(range);
     8     }
     9 }
    10 
    11 执行结果:
    12 素数[2] :2 素数[3] :3 素数[5] :5 素数[7] :7 素数[11] :11 素数[13] :13 素数[17] :17 素数[19] :19 素数[23] :23 素数[29] :29 
    13 素数[31] :31 素数[37] :37 素数[41] :41 素数[43] :43 素数[47] :47 素数[53] :53 素数[59] :59 素数[61] :61 素数[67] :67 素数[71] :71 
    14 素数[73] :73 素数[79] :79 素数[83] :83 素数[89] :89 素数[97] :97 
    15 质数总个数为: 25
  • 相关阅读:
    HTTP Digest authentication
    HDU 1520 Anniversary party 树形DP
    Servlet过滤器
    Js apply 方法 具体解释
    java 读取固定目录下的文件(和上篇差点儿相同)
    使用nodeitk进行角点检測
    ~/.local/share/Trash/files
    mv,Directory not empty不能目录覆盖
    cp 提示 overwrite 问题
    cv:显示Linux命令运行进度
  • 原文地址:https://www.cnblogs.com/celine/p/8428747.html
Copyright © 2020-2023  润新知