LightOJ 1197 Help Hanzo 求区间内素数的个数
来源:互联网 发布:手机和mac照片同步 编辑:程序博客网 时间:2024/05/22 06:56
- 数论题尽量都用longlong。
- 先打出小部分素数,用这部分素数筛区间内的素数。
题目链接:http://acm.hust.edu.cn/vjudge/problem/26909
#include<cstdio>#include<iostream>#include<sstream>#include<cstdlib>#include<cmath>#include<cctype>#include<string>#include<cstring>#include<algorithm>#include<stack>#include<queue>#include<set>#include<map>#include<ctime>#include<vector>#include<fstream>#include<list>using namespace std;#define ms(s) memset(s,0,sizeof(s))typedef unsigned long long ULL;typedef long long LL;const int INF = 0x3fffffff;bool isPrime[100005];const int N = 1000000;bool primeTable[N+5];int p[N/10],tot;void make_primeTable(){ tot = 0; fill(primeTable,primeTable+N,1); primeTable[0] = false; primeTable[1] = false; int maxed = sqrt(N); for(int i = 2; i <= maxed; ++i){ if(primeTable[i] == true){ p[tot++] = i; for(int j = i*i; j <= N; j += i) primeTable[j] = false; } } for(int i = maxed+1; i <= N; ++i) if(primeTable[i] == true) p[tot++] = i;}int main(){// freopen("F:\\input.txt","r",stdin);// freopen("F:\\output.txt","w",stdout);// ios::sync_with_stdio(false); LL a,b; int t; LL idx; int ans; scanf("%d",&t); make_primeTable(); for(int cas = 1; cas <= t; ++cas){ scanf("%lld%lld",&a,&b); ms(isPrime); ans = 0; int maxs = sqrt(b); for(int i = 0; i < tot; ++i){ if(p[i] > maxs) break; if(a%p[i] == 0) idx = a; else idx = p[i]*(a/p[i]+1); while(idx <= b){ isPrime[idx-a] = true; if(idx <= 1000000 && primeTable[idx]==true) isPrime[idx-a] = false; idx += p[i]; } } for(int i = 0; i <= b-a; ++i){ if(isPrime[i]==0) ans++; } if(a == 1){ ans--; } printf("Case %d: %d\n",cas,ans); } return 0;}
1 0
- LightOJ 1197 Help Hanzo 求区间内素数的个数
- Help Hanzo(区间求素数) LightOJ
- Help Hanzo 区间的素数的个数
- LightOJ 1197Help Hanzo (区间素数筛选法)
- lightOJ 1197 Help Hanzo (区间找素数)
- LightOJ 1197 Help Hanzo(区间素数筛)
- LightOJ 1197 Help Hanzo(区间素数筛选)
- LightOJ - 1197 Help Hanzo 素数筛
- 【区间筛法】 LightOJ 1197 Help Hanzo
- LOJ - 1197 - 《Help Hanzo》【区间素数】
- LightOJ 1197 Help Hanzo
- LightOJ 1197 Help Hanzo
- lightOJ 1197 Help Hanzo 两阶段素数筛选
- LightOJ 1197 - Help Hanzo (模拟筛素法区间筛素)
- 求一段区间内素数的个数
- Help Hanzo (素数筛+区间枚举)
- LightOJ 1197(大数范围筛区间内素数个数)
- E - Help Hanzo(LightOJ 1197)
- 关于点9图的制作(每天积累一点点)
- 【数论】hdu5080 Colorful Toy (polya计数+简单几何)
- 数论 快速矩阵幂 POJ 3070 Fibonacci
- 简单dp
- 【华为OJ】超长正整数相加
- LightOJ 1197 Help Hanzo 求区间内素数的个数
- Kafka常用命令
- [ASP.NET MVC 小牛之路]02 - C#知识点提要
- 最大子段积
- 向量点乘(内积)和叉乘(外积、向量积)概念及几何意义解读
- SQL语句大全
- [ASP.NET MVC 小牛之路]03 - Razor语法
- 事务
- PHP static关键字的用法及注意点