zoukankan      html  css  js  c++  java
  • 素数个数

    题目描述

    1,2,⋯,N1,2,cdots,N1,2,,N 中素数的个数。

    输入输出格式

    输入格式:

    1 个整数NNN。

    输出格式:

    1 个整数,表示素数的个数。

    输入输出样例

    输入样例#1:
    10
    输出样例#1:
    4

    说明

    • 对于40% 的数据,1≤N≤1061 le N le 10^61N106;

    • 对于80% 的数据,1≤N≤1071 le N le 10^71N107;

    • 对于100% 的数据,1≤N≤1081 le N le 10^81N108。

    思路

    线性筛的裸板子;

    两处优化:

    l         去掉所有2的倍数;

    l         Register修饰符暗示编译程序相应的变量将被频繁地使用,如果可能的话,应将其保存在CPU的寄存器中,以加快其存储速度。

    代码

     1 #include<cstdio>
     2 const int maxn=6e6+1;
     3 const int maxm=1e8+1;
     4 int n;
     5 int s[maxn],ss;
     6 bool v[maxm];
     7 int main(){
     8     scanf("%d",&n);
     9     if(n<2){puts("0");return 0;}
    10     for(register int i=3;i<=n;i+=2){
    11         if(!v[i]) s[ss++]=i;
    12          for(register int j=0,k;j<ss;j++){
    13              k=i*s[j];
    14              if(k>n) break;
    15             v[k]=1;
    16             if(i%s[j]==0) break;
    17          }
    18     }
    19     printf("%d",ss+1);
    20     return 0;
    21 }
  • 相关阅读:
    帮助理解Docker,生动装逼介绍Docker
    Java 最常见 200+ 面试题 + 全解析
    CentOS7.0 yum安装 docker
    集合总结
    C#复习笔记
    match方法的使用
    偏函数
    通用装饰器
    装饰器修饰带参数的功能函数
    多个装饰器的使用
  • 原文地址:https://www.cnblogs.com/J-william/p/7711932.html
Copyright © 2011-2022 走看看