zoukankan      html  css  js  c++  java
  • 埃拉托斯特尼--筛法 c++求质数,用bitset类型

    要得到自然数n以内的全部素数,必须把不大于 的所有素数的倍数剔除,剩下的就是素数。
    给出要筛数值的范围n,找出以内的素数
    1既不是质数也不是合数,去掉;
    先用2去筛,即把2留下,把2的倍数剔除掉;
    再用下一个质数,也就是3筛,把3留下,把3的倍数剔除掉;
    接下去用下一个质数5筛,把5留下,把5的倍数剔除掉;不断重复下去......。
     
    主要用到bitset类型
     1 #include<iostream>
     2 #include<string>
     3 #include<bitset>
     4 #include<cmath>
     5 
     6 using namespace std;
     7 int main()
     8 {
     9     int const max_number(32);
    10     int const max_test((int)sqrt((double)max_number));
    11     bitset<max_number + 1> number;
    12     number.set();
    13     number[1] = 0;
    14     for (int i(1); i!=max_test; ++i)
    15     {
    16         if (number[i]){
    17             //筛掉倍数
    18             for (int j(i*i); j <max_number + 1; j += i)
    19             {
    20                 number[j] = 0;
    21             }
    22         }
    23     }
    24     cout << "The number of the primes less than " << max_number + 1
    25         << "is" << number.count() << endl;
    26     for (int i(1); i != max_number + 1; ++i)
    27     {
    28         if (number[i]) cout << i << ",";
    29     }
    30     cout << endl;
    31     system("pause");
    32 }
    坚持比努力更重要
  • 相关阅读:
    tcpdump命令
    浅谈  curl命令
    MongoDB下rs.status()命令
    Device mapper存储方式
    top命令
    cat命令汇总整理
    centos7搭建nginx日志
    CentOS7 防火墙(firewall)的操作命令(转)
    服务器的硬件组成
    shell随机生成10个文件
  • 原文地址:https://www.cnblogs.com/dameidi/p/9313461.html
Copyright © 2011-2022 走看看