浏览器标题切换
浏览器标题切换end

CodeForces546D - Soldier and Number Game - 素数筛模板题

题解

素数筛模板题,不能用单纯暴力来解。

AC代码

#include<iostream>
#include<stdio.h>
#include<string.h>
using namespace std;
const int N=5e6+10;

//int book[N];
//int pri[N/2];
int p;
int sum[N];
int book[N];

//int prime(int n)
//{
//    for(int i=2;i*i<=n;i++)
//    {
//        if(n%i==0)
//            return 0;
//    }
//    return 1;//是素数
//}

void init()
{
    memset(book,0,sizeof(book));
    memset(sum,0,sizeof(sum));

    book[0]=1,book[1]=1;
//    p=0;
    for(int i=2; i<=N; i++)
    {
        if(book[i]==0)
        {
//            pri[p++]=i;
            for(int j=i; j<=N; j+=i)
            {
                book[j]=1;
                int kk=j;
                while(kk%i==0)
                {
                    sum[j]++;
                    kk/=i;
                }
            }
        }
    }
    for(int i=2; i<=N; i++)
        sum[i]+=sum[i-1];
}


int main()
{
    init();
    int t,a,b;
    scanf("%d",&t);
    while(t--)
    {
        scanf("%d %d",&a,&b);
        //    b=b-1;
//        int ans=0;
//        for(int i=a;i<=b;i++)
//        {
//             cout<<"**"<<endl;
//            if(book[i]==0)
//               ans++;
//            else
//            {
//                for(int j=2;j<p&&pri[j]*pri[j]<=i;j++)
//                {
//                    while(i%j==0)
//                    {
//                        i/=j;
//                    }
//                    ans++;
//                }
//            }
//
//        }
//        printf("%d\n",sum[a]-sum[b-1]);
        printf("%d\n",sum[a]-sum[b]);

    }
    return 0;
}
posted @   抓水母的派大星  阅读(153)  评论(0编辑  收藏  举报
编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」
点击右上角即可分享
微信分享提示