SPOJ_1_PRIME1

原创 2012年03月30日 13:00:35

USACO快刷完了,从今天开始写SPOJ的题解了。

这一到题不难。

高斯筛法+埃拉托色尼筛法,先求出1-33000的所有素数,再用这些素数去求得区间内所有素数

/*
 *NAME: prime1
 *LANG: C++
 */
#include <cstdio>
#include <cstdlib>
#include <cstring>
using namespace std;

int prime[7000];
bool check[103000];
int n,m;

int main(){
    //先求出1-33000的所有素数
    memset(check,true,sizeof(check));
    int tot=0;int N=32000;
    for (int i=2;i<=N;++i){
	if (check[i]) prime[tot++]=i;
	for (int j=0;j<tot;++j){
	    if (i*prime[j]>N) break;
	    check[i*prime[j]]=false;
	    if (i%prime[j] == 0)break;
	}
    }
    
    //solve
    int k;scanf("%d",&k);
    for (int t=1;t<=k;++t){
	scanf("%d %d",&n,&m);if (n==1) n=2;
	memset(check,true,sizeof(check));
	for (int i=0;i<tot;++i)
	    for (int j=n/prime[i];j<=m/prime[i];++j)
		if (prime[i]*j>=n && j!=1) check[prime[i]*j-n]=false;
	for (int i=0;i<=m-n;++i) 
	    if (check[i]) printf("%d\n",i+n);
	printf("\n");
    }
    return 0;
}


相关文章推荐

【SPOJ-PRIME1】Prime Generator【区间质数筛】

果然SPOJ第二题就很有趣。 因为n太大,线性筛和普通判断方法都不行。于是要用区间筛。 先预处理出sqrt(n)以内的所有质数(大概是31622),埃氏筛可以承受,我写了线性筛。 ...

SPOJ GSS1 & GSS3&挂了的GSS5

线段树然后yy一下,搞一搞。GSS1:#include #include using namespace std; int lm[200005],rm[200005],ma[200005],s[2...

【SPOJ-GSS1】Can you answer these queries I【线段树】【最大子段和】

题意: 给出一些数,一些询问,每次询问一段区间内最大的子段和是多少。 无修改的小白逛公园... #include #include using namespace std; co...

SPOJ 705 SUBST1 New Distinct Substrings 后缀数组

题目大意: 给出一个字符串(长度 大致思路: 和SPOJ 694. Distinct Substrings 一样....买一送一.... /* * Author: Gatevin * Cre...

SPOJ PROD1GCD - Product it again

SPOJ PROD1GCD Description he problem is very simple. given two integers n and m, find the prod...

SPOJ SUBST1 New Distinct Substrings(不同的子串个数)

题意:给你一个长度为n的字符串,问你有几个不同的子串. 如 ABABA:  len=1 : A,B len=2 : AB,BA len=3 : ABA,BAB len=4 : ABAB,BA...
  • CillyB
  • CillyB
  • 2017年07月18日 13:19
  • 136

SPOJ Primitive Root :判断一个数模p的阶是否是p-1

Description In the field of Cryptography, prime numbers play an important role. We are intere...

SPOJ GSS1 Can you answer these queries I (线段树求区间最大连续和)

题目大意给定一个数列,并给出一些询问的区间,求出询问区间内的最大连续区间和。解题思路直接上线段树,但是区间合并的时候遇到了一些困难。首先我们考虑,想要达到 logn 级别的访问时间,对于线段树的每个节...

Spoj 375 QTREE1 树链剖分裸题

题目链接:http://www.spoj.com/problems/QTREE/ 题意: T个测试案例 n个点的树 下面n-1条边和边权   change u v 把第u-th给出的边 的边权改为v ...

SPOJ - VLATTICE Visible Lattice Points(gcd(x,y,z)=1的对数/莫比乌斯反演)

题目链接: SPOJ - VLATTICE Visible Lattice Points 题意: 一个n*n*n的方格,从最左下角(0, 0, 0)最多可以看到多少个点?(不被遮挡)包括方格内部...
  • Ramay7
  • Ramay7
  • 2016年06月04日 13:57
  • 371
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:SPOJ_1_PRIME1
举报原因:
原因补充:

(最多只允许输入30个字)