1013 数素数 (20)(20 分)

令P~i~表示第i个素数。现任给两个正整数M <= N <= 10^4^,请输出P~M~到P~N~的所有素数。

输入格式:

输入在一行中给出M和N,其间以空格分隔。

输出格式:

输出从P~M~到P~N~的所有素数,每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                         

分析: 题目要求的是打出前10000个素数, 那么是否可以估算出最后一个素数是多大?

根据素数分布公式, 1~x范围内的素数个数大概是x/ln(x), 将x=100000, 200000逐一带入,

可以发现200000符合要求.

代码为:

 1 #include <cstdio>
 2 #include <cstdlib>
 3 #include <cmath> // sqrt
 4 #include <cstring> // memset
 5 #include <vector>
 6 #include <iostream>
 7 using namespace std;
 8
 9 #define range 200000
10 bool isPrime[range+5];
11
12 int main()
13 {
14     //freopen("input.txt", "r", stdin);
15     memset(isPrime, 1, (range+5)*sizeof(bool));
16
17     int sqrt_of_range = sqrt(range);
18     for(int i=2;i<=sqrt_of_range;i++)
19         if(isPrime[i])
20             for(int j=i*i;j<=range;j+=i)
21                 isPrime[j] = 0;
22     vector<int> primes;
23     primes.push_back(1);
24     for(int i=2;i<range;i++)
25         if(isPrime[i])
26             primes.push_back(i);
27
28     int M, N;
29     cin>>M>>N;
30     for(int i=0;i<N-M+1;i++)
31     {
32         cout<<primes[i+M];
33         if(i!=N-M)
34         {
35             if(i%10 == 9)
36                 cout<<endl;
37             else
38                 cout<<‘ ‘;
39         }
40     }
41     return 0;
42 } 

#include <cstdio>#include <cstdlib> #include <cmath> // sqrt#include <cstring> // memset#include <vector>#include <iostream>using namespace std;
#define range 200000bool isPrime[range+5];
int main(){//freopen("input.txt", "r", stdin);memset(isPrime, 1, (range+5)*sizeof(bool));int sqrt_of_range = sqrt(range);for(int i=2;i<=sqrt_of_range;i++)if(isPrime[i])for(int j=i*i;j<=range;j+=i)isPrime[j] = 0;vector<int> primes;primes.push_back(1);for(int i=2;i<range;i++)if(isPrime[i])primes.push_back(i);int M, N;cin>>M>>N;for(int i=0;i<N-M+1;i++){cout<<primes[i+M];if(i!=N-M){if(i%10 == 9)cout<<endl;elsecout<<‘ ‘;}}return 0;}

原文地址:https://www.cnblogs.com/Luxuer/p/9374420.html

时间: 2024-08-29 19:15:32

1013 数素数 (20)(20 分)的相关文章

1013 数素数 (20 分)

令 P?i?? 表示第 i 个素数.现任给两个正整数 M≤N≤10?4??,请输出 P?M?? 到 P?N?? 的所有素数. 输入格式: 输入在一行中给出 M 和 N,其间以空格分隔. 输出格式: 输出从 P?M?? 到 P?N?? 的所有素数,每 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 分析:这个

1013 数素数 (20 分)

令 P?i?? 表示第 i 个素数.现任给两个正整数 M≤N≤10?4??,请输出 P?M?? 到 P?N?? 的所有素数. 输入格式: 输入在一行中给出 M 和 N,其间以空格分隔. 输出格式: 输出从 P?M?? 到 P?N?? 的所有素数,每 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 #incl

PTA乙级 (1013 数素数 (20分))

1013 数素数 (20分) https://pintia.cn/problem-sets/994805260223102976/problems/994805309963354112 #include <iostream> #include <cstdio> #include <cstring> #include <string> #include <cmath> #include <algorithm> #include <

PAT乙级 1013. 数素数 (20)

1013. 数素数 (20) 时间限制 100 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 令Pi表示第i个素数.现任给两个正整数M <= N <= 104,请输出PM到PN的所有素数. 输入格式: 输入在一行中给出M和N,其间以空格分隔. 输出格式: 输出从PM到PN的所有素数,每10个数字占1行,其间以空格分隔,但行末不得有多余空格. 输入样例: 5 27 输出样例: 11 13 17 19 23 29 31 37 4

PAT乙级1013.数素数

1013 数素数 (20)(20 分) 令P~i~表示第i个素数.现任给两个正整数M <= N <= 10^4^,请输出P~M~到P~N~的所有素数. 输入格式: 输入在一行中给出M和N,其间以空格分隔. 输出格式: 输出从P~M~到P~N~的所有素数,每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 #inc

*1013. 数素数

1 /* 2 * Main.c 3 * 1013. 数素数 4 * Created on: 2014年8月30日 5 * Author: Boomkeeper 6 ********部分通过******** 7 */ 8 #include <stdio.h> 9 10 int isPrime(int in){ 11 12 int ret = 1; 13 int i; 14 if(in==1) 15 ret = 0; 16 for(i=3;i<in;i+=2) 17 if(in%i==0){

1013 数素数 (20分)

#include <iostream> #include <string.h> #include <cmath> using namespace std; int main() { int m,n,count=0,w=0,c = 0; cin>>m>>n; for(int i=2;i<500000;i++) { w=0; for(int j=2;j<=sqrt(i);j++) { if(i%j==0) { w=1; break; }

PAT 1013. 数素数 (20)

令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 1 #include<stdio.h> 2 #include

PAT 乙级 1013. 数素数 (20)

令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 1 #include<cstdio> 2 #include&