zoukankan      html  css  js  c++  java
  • JD 题目1040:Prime Number (筛法求素数)

    OJ题目:click here~~

    题目分析:输出第k个素数

    贴这么简单的题目,目的不清纯歧视

    用筛法求素数的基本思想是:把从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

    AC_CODE

    #include <stdio.h>
    #include <string.h>
    #include <math.h>
    #include <iostream>
    
    using namespace std ;
    const int N = 1000000;
    bool prime[N] ;
    void initprime(){
        memset(prime, 1 , sizeof(prime)) ;
        prime[0] = prime[1] = 0 ;
        double t = sqrt(N) + 1 ;
        for(int i = 2;i < t;i++){
            if(prime[i]){
                for(int j = i + i;j < N;j += i)
                    prime[j] = false ;
            }
        }
    }
    
    int main(){
        initprime();
        int k , t ;
        while(cin >> k){
            t = 0 ;
            for(int i = 0;i < N;i++){
                if(prime[i]){
                    t++;
                    if(t == k){
                        cout << i << endl ;
                        break ;
                    }
                }
            }
        }
        return  0 ;
    }
    


  • 相关阅读:
    十一:jinja2模板传参
    Python基础—流程控制
    Python字符串格式化输出
    Python基本数据类型--列表、元组、字典、集合
    Python基本数据类型之字符串、数字、布尔
    Python用户输入和代码注释
    Python中变量和常量的理解
    Python程序的执行方式
    Python初识
    python初识
  • 原文地址:https://www.cnblogs.com/wzjhoutai/p/7367995.html
Copyright © 2011-2022 走看看