• long long 大数 100000内的区间内筛素数个数


    题目大意:见标题

    思路: 先欧筛素数(1000000内) 埃筛思路区间排除

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 int p[1000500],c[1500500];
     4 int fd[200005];
     5 int fe[1500500];
     6 const int Max=1500000;
     7 int num=1;
     8 void io() {
     9 
    10     memset(c,0,sizeof(c));
    11     for(int i=2; i<Max; i++) {
    12         if(!c[i])
    13             p[num++]=i;
    14         for(int j=1; j<num&&i*p[j]<=Max; j++) {
    15             c[i*p[j]]=1;
    16             if(i%p[j]==0)
    17                 break;
    18         }
    19     }
    20 }
    21 long long maxe(long long a,long long b) {
    22     if(a>b)
    23         return a;
    24     else
    25         return b;
    26 }
    27 int main() {
    28     io();
    29 
    30     int T;
    31     scanf("%d",&T);
    32     int e=T;
    33     while(T--) {
    34         long long a,b;
    35         int numm=0;
    36         scanf("%lld%lld",&a,&b);
    37 
    38         memset(fe,0,sizeof(fe));
    39         for(int i=1; i<num&&p[i]*p[i]<=b; i++) {
    40             long long int x=a/p[i],y=b/p[i]+1;
    41             for(int j=x; j<=y; j++) {
    42                 fe[maxe(0,j*p[i]-a+1)]=1;
    43 //                cout<<min(maxe(0,j*p[i]-a),b-a+2)<<endl;
    44             }
    45         }
    46         for(int i=1; i<=num; i++) {
    47             fe[maxe(p[i]-a+1,0)]=0;
    48         }
    49         if(a==1)
    50             fe[1]=1;
    51         for(int i=1; i<=b-a+1; i++) {
    52             if(fe[i]==0)
    53                 numm++;
    54 //            cout<<" "<<fe[i];
    55         }
    56 
    57 
    58 
    59 
    60         cout<<"Case "<<e-T<<": "<<numm<<endl;
    61     }
    62 
    63 }
  • 相关阅读:
    Lucene.net系列六 search 下
    Lucene.net 系列三 index 中
    初识Antlr
    Antlr首页计算机器实验成功
    C#语言学习之旅(1):C#基础
    NeatUpload js 判断上传文件的大小是否超过了空间的大小
    对XML的各种操作
    多表求和
    xmlhttp 最简单的无刷新
    xml 查询
  • 原文地址:https://www.cnblogs.com/lhsghhqgmzy/p/10781469.html
Copyright © 2020-2023  润新知