zoukankan      html  css  js  c++  java
  • LightOJ 1197 Help Hanzo(区间素数筛)

    题目链接OvO

    题目大意

      (t)个询问,每次问([l,r])内有多少素数。

    具体实现

      区间素数筛选的模板题,先提前筛出来一组素数,然后再用埃氏筛选法对区间进行筛选,需要注意的是炸(int)以及左区间为(1)的情况。

    代码

    const int maxn = 1e6+10;
    int p[maxn], kase;
    bool u[maxn], isp[maxn];
    void pri() {
        for (int i = 2; i<maxn; ++i) {
            if (!u[i]) u[i] = p[++kase] = i;
            for (int j = 1; i*p[j]<maxn; ++j) {
                u[i*p[j]] = p[j];
                if (!(i%p[j])) break;
            }
        }
    }
    int main(void) {
        pri();
        int t, kase = 1;
        scanf("%d", &t);
        while(t--) {
            int l, r;
            scanf("%d%d", &l, &r);
            zero(isp);
    		for (int i = 1; 1LL*p[i]*p[i] <= r; ++i)
    			for (ll j = l/p[i]*p[i]; j <= r; j += p[i])
    				if (j >= l && j > p[i]) isp[j-l] = true;
            int ans = 0;
            for (int i = l; i<=r; ++i)
                if (!isp[i-l]) ++ans;
            if (l==1) --ans; //如果是1开始的话没法被筛去,需要特判
            printf("Case %d: %d
    ", kase++, ans);
        }
        return 0;
    }
    
  • 相关阅读:
    css半透明边框
    css脱离文档流
    margin负值的作用
    浅谈BFC
    css多列布局
    css布局--水平垂直居中
    css布局--垂直居中
    css布局--水平居中
    题解-APIO2019奇怪装置
    题解-AtCoder ARC-078F Mole and Abandoned Mine
  • 原文地址:https://www.cnblogs.com/shuitiangong/p/12803840.html
Copyright © 2011-2022 走看看