WenJieWangFlyToWorld

导航

求1~10000之间的素数个数

首先存储1~100内的素数,然后在据此计算1~10000内素数以及个数

  1. package program;  
  2.   
  3. import java.util.Arrays;  
  4.   
  5. public class suShu100 {  
  6.   
  7.     static boolean[] flag = new boolean[101];  
  8.     static int[] arrs = new int[100];  
  9.     static int num = 0;  
  10.   
  11.     public static void main(String[] args) {  
  12.         // 1 存储100以内的素数  
  13.         GenPrime();  
  14.         System.out.println(Arrays.toString(arrs));  
  15.         System.out.println(num);  
  16.   
  17.         // 2 求10000以内的素数  
  18.         int count = 0;  
  19.         for (int i = 2; i <= 10000; i++) {  
  20.             if (IsPrime(i)) {  
  21.                 count++;  
  22.                 // System.out.print(i + " ");  
  23.                 // if (count % 10 == 0) {  
  24.                 // System.out.println("");  
  25.                 // }  
  26.             }  
  27.         }  
  28.         System.out.println(count);  
  29.   
  30.     }  
  31.   
  32.     private static boolean IsPrime(int s) {  
  33.   
  34.         int num2 = 0;  
  35.         int k = 0;  
  36.   
  37.         if (s <= 100) {  
  38.             if (flag[s]) {  
  39.                 return true;  
  40.             } else {  
  41.                 return false;  
  42.             }  
  43.         }  
  44.         while (arrs[k] * arrs[k] <= s && k < num) {  
  45.             if (s % arrs[k] == 0) {  
  46.                 return false;  
  47.             }  
  48.             k++;  
  49.         }  
  50.         return true;  
  51.     }  
  52.   
  53.     private static void GenPrime() {  
  54.         int s = 0;  
  55.         int j = 0;  
  56.         for (int i = 0; i < flag.length; i++) {  
  57.             flag[i] = true;  
  58.         }  
  59.         flag[0] = false;  
  60.         flag[1] = false;  
  61.         for (int i = 2; i <= 100; i++) {  
  62.             if (flag[i]) {  
  63.                 arrs[s++] = i;  
  64.   
  65.             }  
  66.   
  67.             j = 2 * i;  
  68.             while (j <= 100) {  
  69.                 flag[j] = false;  
  70.                 j = j + i;  
  71.             }  
  72.         }  
  73.         num = s;  
  74.     }  
  75.   
  76. }  

结果:

[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
25
1229

posted on 2017-07-19 11:33  WenjieWangFlyToWorld  阅读(650)  评论(0编辑  收藏  举报