zoukankan      html  css  js  c++  java
  • Jzoj5458【NOIP2017提高A组冲刺11.7】质数

    小X 是一位热爱数学的男孩子,在茫茫的数字中,他对质数更有一种独特的情感。小X 认为,质数是一切自然数起源的地方。
    在小X 的认知里,质数是除了本身和1 以外,没有其他因数的数字。
    但由于小X 对质数的热爱超乎寻常,所以小X 同样喜欢那些虽然不是质数,但却是由两个质数相乘得来的数。
    于是,我们定义,一个数是小X 喜欢的数,当且仅当其是一个质数,或是两个质数的乘积。
    而现在,小X 想要知道,在L 到R 之间,有多少数是他喜欢的数呢?

    今天题目放水了,10点半打完在机房玩纸牌,结果只赢了一局qwq

    让后第三题就爆炸剩下10分了qwq

    当然这道题相信各位还是可以一眼秒的

    基本线性筛,把质数表筛出来之后一个个乘起来,大过max就退出好了

    #include<stdio.h>
    #include<string.h>
    #include<algorithm>
    #define M 10000000
    using namespace std;
    bool vis[10000010],v2[10000010];
    int w[3000010],t,sum[10000010],n;
    int main(){
    	freopen("prime.in","r",stdin);
    	freopen("prime.out","w",stdout);
    	scanf("%d",&n);
    	for(int i=2;i<=M;++i){
    		if(!vis[i]){
    			w[++t]=i;
    			for(int j=1;j<=t&&i*w[j]<=M;++j) vis[i*w[j]]=1;
    		} else for(int j=1;j<=t&&i*w[j]<=M;++j){
    				vis[i*w[j]]=v2[i*w[j]]=1;
    				if(i%w[j]==0) break;
    			}
    	}
    	for(int i=vis[1]=v2[1]=1;i<=M;++i) sum[i]=sum[i-1]+!v2[i];
    	for(int x,y;n--;){
    		scanf("%d%d",&x,&y);
    		printf("%d
    ",sum[y]-sum[--x]);
    	}
    }

  • 相关阅读:
    sql语句添加查询字段
    SqlServer Case when then用法总结
    单例与多线程
    HttpSession详解
    范式
    SQL语句中的Having子句与where子句
    HTTP无状态
    字节流与字符流的区别
    选择排序
    ReentrantLock VS synchronized
  • 原文地址:https://www.cnblogs.com/Extended-Ash/p/9477228.html
Copyright © 2011-2022 走看看