zoukankan      html  css  js  c++  java
  • 求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

  • 相关阅读:
    snmp安装zabbix
    〖Demo〗-- 用Django实现Video页面分类查询
    〖Python〗-- Django的ORM性能优化建议
    〖Web〗-- 新特性之WebSocket
    〖Python〗-- 数据结构
    〖缓存〗-- Memcached 与 Redis
    〖算法〗-- NB二人组:堆排序、归并排序
    〖算法〗-- 快速排序 、希尔排序、计数排序
    〖算法〗-- 排序lowB三人组:冒泡排序、选择排序、 插入排序
    〖算法〗-- 递归、二分查找、列表查找
  • 原文地址:https://www.cnblogs.com/wwjldm/p/7204842.html
Copyright © 2011-2022 走看看