B1013-素数筛选法
来源:互联网 发布:南京java培训机构 编辑:程序博客网 时间:2024/05/17 07:17
题目:
令Pi表示第i个素数。现任给两个正整数M <= N <= 104,请输出PM到PN的所有素数。
输入格式:
输入在一行中给出M和N,其间以空格分隔。
输出格式:
输出从PM到PN的所有素数,每10个数字占1行,其间以空格分隔,但行末不得有多余空格。
输入样例:
5 27
输出样例:
11 13 17 19 23 29 31 37 41 43
47 53 59 61 67 71 73 79 83 89
97 101 103
计算N以内的素数的方法
寻找素数的算法都需要遍历,减小判断的次数才是关键。
1.素数的定义:任何一个大于1的自然数中除了1和本身之外没有其他的因子
for(i=2;i<n;i++){ for(j=2;j<i+1;j++) if(i%j==0) break; if(j==i+1) cout<<j;}
2.试图利用素数的性质减小循环次数
for(i=2;i<n;i++){ for(j=2;j<sqrt(n);j++) if(i%j==0) break; if(j==i+1) cout<<j;}
3.简单的素数的筛选法
bool* p=new bool [n+1];for(i=0;i<n+1;i++) p[i]=true;p[0]=p[1]=false;for(i=2;i<sqrt(n);i++) for(j=i+i;j<n+1;j=j+i) p[j]=falsefor(i=0;i<n+1;i++) if(p[i]) cout<<i;
```#include <iostream>#include <stdio.h>#include <math.h>using namespace std;int main(){ const int n=1000001; int M,N; cin>>M>>N; bool* P; P=new bool [n]; int i,j,k; for(i=0;i<n;i++) P[i]=true; P[0]=P[1]=false; for(i=2;i<sqrt(n);i++) for(j=i+i;j<n;j=j+i) P[j]=false; j=0; k=0; for(i=0;i<n;i++) { if(P[i]) { j++; if(j>M-1&&j<N+1) { if(k) { if(k%10==0) cout<<'\n'; else cout<<' '; } k++; cout<<i; } } } return 0;}
1 0
- B1013-素数筛选法
- B1013. 数素数 (20)
- B1013. 数素数 (20)
- B1013. 数素数 (20')
- PAT B1013.数素数
- PAT B1013. 数素数 (20)
- 筛选法求素数
- 筛选法求素数
- 筛选法求素数
- Eratoshenes素数筛选法
- 素数--超强筛选法
- 素数筛选法
- 筛选法求素数
- 筛选法求素数
- 筛选法求素数
- 筛选法求素数
- 筛选法求素数
- 筛选法求素数
- ---Filter(一)简介
- 【CSS】CSS入门——标准流
- 掰玉米歌词《粉红色的回忆》
- 数组指针和指针数组的区别
- 杭电 人见人爱A^B【和数据大小的考虑有关】
- B1013-素数筛选法
- python web 学习总结
- [FreeCodeCamp-JavaScript]Intermediate Algorithm
- 在 Linux 下用户空间与内核空间数据交换的方式,第 1 部分
- openjudge:跳马问题
- 开通CSDN博客纪念
- mysql 基础学习二
- 在 Linux 下用户空间与内核空间数据交换的方式,第 2 部分:
- 实现复选框的全选和全不选效果