zoukankan      html  css  js  c++  java
  • 区间内素数的筛选

    问题:

    给定整数a, b

    求[a,b)内有多少个素数?

    思路:
    求出[2,根号b)的素数表,同时将其倍数从[a,b)中划去

    代码如下

     1 #include <cstdio>
     2 #include <algorithm>
     3 #include <vector>
     4 #include <queue>
     5 #define MAX_L 500
     6 #define MAX_SQRT_B 50
     7 using namespace std;
     8 
     9 bool isPrime[MAX_L];
    10 bool isPrimeSmall[MAX_SQRT_B];
    11 
    12 int main(int argc, char const *argv[])
    13 {
    14     //freopen("input.txt","r",stdin);
    15     int a, b;
    16     while(scanf("%d %d",&a,&b) != EOF) {
    17         for(int i = 0; i * i < b; i++) {
    18             isPrimeSmall[i] = true;
    19         }
    20         for(int i = 0; i < b - a; i++) {
    21             isPrime[i] = true;
    22         }
    23 
    24         for(int i = 2; i*i < b; i++) {
    25             if(isPrimeSmall[i] == true) {
    26                 for(int j = 2*i; j*j < b; j+=i) {
    27                     isPrimeSmall[j] = false;
    28                 }
    29                 for(int j = (a + i - 1)/i*i; j < b; j += i) {
    30                     isPrime[j-a] = false;
    31                 }
    32             }
    33         }
    34         for(int i = a; i < b; i++) {
    35             if(isPrime[i-a]) {
    36                 printf("%d	",i);
    37             }
    38         }
    39         puts("");
    40     }
    41     return 0;
    42 }
  • 相关阅读:
    员工转正考核
    前端高级技术考察
    前端基础技术考察
    高级前端评定表
    初级前端评定表
    前端工程师等级评定
    前端软实力
    Decode Ways
    深度学习在目标跟踪中的应用
    Interleaving String
  • 原文地址:https://www.cnblogs.com/jasonJie/p/5797932.html
Copyright © 2011-2022 走看看