线性筛
This commit is contained in:
parent
b602b04036
commit
b318babe9b
|
@ -0,0 +1,17 @@
|
||||||
|
# 『入门』(递归专题)纯粹素数
|
||||||
|
|
||||||
|
[问题描述]
|
||||||
|
|
||||||
|
教学案例,必须使用递归函数完成求解!
|
||||||
|
|
||||||
|
纯粹素数,即一个正整数,它是素数,然后去掉其最高位,剩下的数值还是素数,再去掉余下数值的最高位,其还是素数,重复如此,直至还剩下个位,其还是素数。则满足该条件的原整数即为纯粹素数。
|
||||||
|
|
||||||
|
[输入格式]
|
||||||
|
一个整数值n(10 <= n <= 10^6)。
|
||||||
|
|
||||||
|
[输出格式]
|
||||||
|
按从小到大的顺序,一行一个,输出大于等于10,小于等于n之间的所有纯粹素数。
|
||||||
|
|
||||||
|
[输入样例]
|
||||||
|
|
||||||
|
[输出样例]
|
|
@ -0,0 +1 @@
|
||||||
|
#
|
|
@ -0,0 +1,16 @@
|
||||||
|
//weiwancheng
|
||||||
|
#include <iostream>
|
||||||
|
using namespace std;
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
int n,f[10001]={0};
|
||||||
|
cin>>n;
|
||||||
|
f[1]=2;
|
||||||
|
f[2]=3;
|
||||||
|
f[3]=5;
|
||||||
|
f[5]=7;
|
||||||
|
int tou=4,wei=5;
|
||||||
|
do{
|
||||||
|
tou++;
|
||||||
|
}while(tou<wei)
|
||||||
|
}
|
Binary file not shown.
|
@ -0,0 +1,7 @@
|
||||||
|
## z:\Chao\src\Template\test\in.txt
|
||||||
|
2020/03/14 ÖÜÁù 11:41:28.68
|
||||||
|
Hello Easy C++ project!
|
||||||
|
|
||||||
|
-----------------------------------------------
|
||||||
|
Process exited after 200 ms with return value 0
|
||||||
|
|
|
@ -1,28 +1 @@
|
||||||
# 【东莞中学2013暑假训练题(一)】Window
|
#
|
||||||
|
|
||||||
题目描述
|
|
||||||
给你一个长度为N的数组,一个长为K的滑动的窗体从最左移至最右端,你只能见到窗口的K个数,每次窗体向右移动一位,如下表:
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
你的任务是找出窗口在各位置时的max value,min value。
|
|
||||||
输入输出格式
|
|
||||||
输入格式:
|
|
||||||
第1行:n,k。
|
|
||||||
第2行:长度为n的数组。
|
|
||||||
|
|
||||||
输出格式:
|
|
||||||
2行,第1行每个位置的min value,第2行每个位置的max value。
|
|
||||||
|
|
||||||
输入输出样例
|
|
||||||
输入样例#1:
|
|
||||||
8 3
|
|
||||||
1 3 -1 -3 5 3 6 7
|
|
||||||
输出样例#1:
|
|
||||||
-1 -3 -3 -3 3 3
|
|
||||||
3 3 5 5 6 7
|
|
||||||
提示信息
|
|
||||||
数据范围:
|
|
||||||
20%: n<=500;
|
|
||||||
50%: n<=100000;
|
|
||||||
100%: n<=1000000。
|
|
|
@ -1,3 +1,28 @@
|
||||||
# 标题
|
# 【东莞中学2013暑假训练题(一)】Window
|
||||||
|
|
||||||
* 内容
|
题目描述
|
||||||
|
给你一个长度为N的数组,一个长为K的滑动的窗体从最左移至最右端,你只能见到窗口的K个数,每次窗体向右移动一位,如下表:
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
你的任务是找出窗口在各位置时的max value,min value。
|
||||||
|
输入输出格式
|
||||||
|
输入格式:
|
||||||
|
第1行:n,k。
|
||||||
|
第2行:长度为n的数组。
|
||||||
|
|
||||||
|
输出格式:
|
||||||
|
2行,第1行每个位置的min value,第2行每个位置的max value。
|
||||||
|
|
||||||
|
输入输出样例
|
||||||
|
输入样例#1:
|
||||||
|
8 3
|
||||||
|
1 3 -1 -3 5 3 6 7
|
||||||
|
输出样例#1:
|
||||||
|
-1 -3 -3 -3 3 3
|
||||||
|
3 3 5 5 6 7
|
||||||
|
提示信息
|
||||||
|
数据范围:
|
||||||
|
20%: n<=500;
|
||||||
|
50%: n<=100000;
|
||||||
|
100%: n<=1000000。
|
|
@ -0,0 +1,30 @@
|
||||||
|
# P3383 【模板】线性筛素数
|
||||||
|
题目背景
|
||||||
|
本题已更新,从判断素数改为了查询第 kk 小的素数
|
||||||
|
提示:如果你使用 cin 来读入,建议使用 std::ios::sync_with_stdio(0) 来加速。
|
||||||
|
|
||||||
|
题目描述
|
||||||
|
如题,给定一个范围 nn,有 qq 个询问,每次输出第 kk 小的素数。
|
||||||
|
|
||||||
|
输入格式
|
||||||
|
第一行包含两个正整数 n,qn,q,分别表示查询的范围和查询的个数。
|
||||||
|
|
||||||
|
接下来 qq 行每行一个正整数 kk,表示查询第 kk 小的素数。
|
||||||
|
|
||||||
|
输出格式
|
||||||
|
输出 qq 行,每行一个正整数表示答案。
|
||||||
|
|
||||||
|
输入输出样例
|
||||||
|
输入 #1复制
|
||||||
|
100 5
|
||||||
|
1
|
||||||
|
2
|
||||||
|
3
|
||||||
|
4
|
||||||
|
5
|
||||||
|
输出 #1复制
|
||||||
|
2
|
||||||
|
3
|
||||||
|
5
|
||||||
|
7
|
||||||
|
11
|
|
@ -0,0 +1 @@
|
||||||
|
#
|
|
@ -0,0 +1,34 @@
|
||||||
|
#include <iostream>
|
||||||
|
#include<cstdio>
|
||||||
|
using namespace std;
|
||||||
|
bool pan[100000001] = { 0 };
|
||||||
|
int chu[1000001] = { 0 }, now = 0;
|
||||||
|
//线性筛
|
||||||
|
void findsu(int n){
|
||||||
|
for (int i = 2; i <= n; i++) {
|
||||||
|
if (!pan[i]) {
|
||||||
|
chu[++now] = i;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (int j = 1; j <= now && i * chu[j] <= n; j++) {
|
||||||
|
pan[i * chu[j]] = 1;
|
||||||
|
//重要!!确保用最大的因数来乘如用6*2=12而避免4*3=12重复计算
|
||||||
|
if (i % chu[j] == 0) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
int n, e;
|
||||||
|
|
||||||
|
scanf("%d%d",&n,&e);
|
||||||
|
|
||||||
|
findsu(n);//筛出素数
|
||||||
|
|
||||||
|
for (int i = 1; i <= e; i++) {
|
||||||
|
scanf("%d",&n);
|
||||||
|
printf("%d\n",chu[n]);
|
||||||
|
}
|
||||||
|
}
|
Binary file not shown.
|
@ -0,0 +1,6 @@
|
||||||
|
100 5
|
||||||
|
1
|
||||||
|
2
|
||||||
|
3
|
||||||
|
4
|
||||||
|
5
|
|
@ -0,0 +1,6 @@
|
||||||
|
100000000 5
|
||||||
|
1
|
||||||
|
2
|
||||||
|
3
|
||||||
|
4
|
||||||
|
5
|
|
@ -0,0 +1,6 @@
|
||||||
|
100000 5
|
||||||
|
1
|
||||||
|
2
|
||||||
|
3
|
||||||
|
4
|
||||||
|
5
|
|
@ -0,0 +1,28 @@
|
||||||
|
## z:\Chao\src\lg3383_no.sushu\test\in.txt
|
||||||
|
2020/04/25 ÖÜÁù 10:18:41.40
|
||||||
|
2
|
||||||
|
3
|
||||||
|
5
|
||||||
|
7
|
||||||
|
11
|
||||||
|
|
||||||
|
-----------------------------------------------
|
||||||
|
Process exited after 200 ms with return value 0
|
||||||
|
|
||||||
|
## z:\Chao\src\lg3383_no.sushu\test\in2.txt
|
||||||
|
2020/04/25 ÖÜÁù 10:18:41.40
|
||||||
|
|
||||||
|
-----------------------------------------------
|
||||||
|
Process exited after 1520 ms with return value -1073741819
|
||||||
|
|
||||||
|
## z:\Chao\src\lg3383_no.sushu\test\in3.txt
|
||||||
|
2020/04/25 ÖÜÁù 10:18:41.40
|
||||||
|
2
|
||||||
|
3
|
||||||
|
5
|
||||||
|
7
|
||||||
|
11
|
||||||
|
|
||||||
|
-----------------------------------------------
|
||||||
|
Process exited after 90 ms with return value 0
|
||||||
|
|
Loading…
Reference in New Issue