zoukankan      html  css  js  c++  java
  • 两种求素数

    判断素数的两种方法:

    第一种就是直接遍历2到sqrt(n)找是否有可以整除的数字

    第二种是筛法:

    用筛法求素数的基本思想是:把从1开始的、某一范围内的正整数从小到大顺序排列, 1不是素数,首先把它筛掉。剩下的数中选择最小的数是素数,然后去掉它的倍数。依次类推,直到筛子为空时结束。如有:
    1 2 3 4 5 6 7 8 9 10
    11 12 13 14 15 16 17 18 19 20
    21 22 23 24 25 26 27 28 29 30
    1不是素数,去掉。剩下的数中2最小,是素数,去掉2的倍数,余下的数是:
    3 5 7 9 11 13 15 17 19 21 23 25 27 29
    剩下的数中3最小,是素数,去掉3的倍数,如此下去直到所有的数都被筛完,求出的素数为:
    2 3 5 7 11 13 17 19 23 29

    用筛法求素数效率更高。

     1 import java.util.Scanner;
     2 
     3 /*
     4  *判断素数的两种方法:
     5  *1、一般求素数算法
     6  *2、筛法求素数
     7  */
     8 
     9 public class Main {
    10     
    11     static boolean[] isPrime=new boolean[100000];
    12 
    13     public static void main(String[] args) {
    14         
    15 //        System.out.println(yiBan(8));
    16         
    17         shaiFa();    //筛法求数数
    18         
    19         Scanner scanner=new Scanner(System.in);
    20         while(true){
    21             int n=scanner.nextInt();
    22             System.out.println(isPrime[n]);
    23         }
    24     }  
    25     
    26     static boolean yiBan(int num){        //一般法求素数
    27         if(num<=1){
    28             return false;
    29         }
    30         for(int i=2;i<=Math.sqrt(num);i++){
    31             if(num%i==0){
    32                 return  false;
    33             }
    34         }
    35         return true;
    36     }
    37     
    38     static void shaiFa(){        //筛法求素数
    39         for(int i=0;i<isPrime.length;i++){
    40             isPrime[i]=true;
    41         }
    42         isPrime[0]=isPrime[1]=false;
    43         for(int i=2;i<isPrime.length;i++){
    44             if(isPrime[i]){
    45                 for(int j=2*i;j<isPrime.length;j+=i){
    46                     isPrime[j]=false;
    47                 }            
    48             }
    49         }
    50     }
    51 
    52 }
  • 相关阅读:
    Codeforces Round #681 (Div. 2, based on VK Cup 2019-2020
    浙江农林大学第十九届程序设计竞赛暨天梯赛选拔赛
    Educational Codeforces Round 97 (Rated for Div. 2)
    2018icpc南京区域赛的补题
    天梯赛的一些题目
    djangorestful framework (三)学习
    rest-framework之版本控制
    rest-framework之响应器(渲染器)
    rest-framework之分页器
    rest-framework之频率控制
  • 原文地址:https://www.cnblogs.com/flypie/p/5121712.html
Copyright © 2011-2022 走看看