美文网首页
1013. 数素数 (20)

1013. 数素数 (20)

作者: 小路_ | 来源:发表于2017-06-29 22:30 被阅读0次

令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

思路:使用筛选法,现将素数筛选出来,然后对其进行操作。
测试点4:是个比较大的数据。

#include <iostream>
#include <cmath>
using namespace std;

int isprime(int n){
    int i;
    for(i=2;i<=(int)sqrt((double)n);++i){
        if(n%i==0) return 0;
    }
    return 1;
}

int main()
{
    int M,N,k=0;
    cin>>M>>N;
    int a[110000];
    
    for(int i=2,j=0;i!=110000;++i){
        if(isprime(i)){
            a[j++]=i;
        }
        
    }
    
    for(int i=M-1;i<N; ++i){
        if(k<9&&i!=N-1){
            cout<<a[i]<<" ";
            k++;
        }
        else if(k==9&&i!=N-1) {
            cout<<a[i]<<endl;
            k=0;
        }
        else if(i==N-1) {
            cout<<a[i];
        }
    }
    
    return 0;
}

筛选法:
先把N个自然数按次序排列起来。1不是质数,也不是合数,要划去。第二个数2是质数留下来,而把2后面所有能被2整除的数都划去。2后面第一个没划去的数是3,把3留下,再把3后面所有能被3整除的数都划去。3后面第一个没划去的数是5,把5留下,再把5后面所有能被5整除的数都划去。这样一直做下去,就会把不超过N的全部合数都筛掉,留下的就是不超过N的全部质数。

相关文章

  • PAT-B-1013. 数素数(Java)

    1013. 数素数 (20)

  • 1013. 数素数 (20)

    题目: 令Pi表示第i个素数。现任给两个正整数M <= N <= 104,请输出PM到PN的所有素数。 输入格式:...

  • 1013. 数素数 (20)

    令Pi表示第i个素数。现任给两个正整数M <= N <= 104,请输出PM到PN的所有素数。 输入格式: 输入在...

  • 1013.数素数

    题目描述 令Pi表示第i个素数。现任给两个正整数M <= N <= 10000,请输出PM到PN的所有素数。 输入...

  • 【PAT-乙-C++】1013. 数素数 (20)

    问题: 这个方案有几个测试点没有通过,没有找到问题,之后再找找看 1013. 数素数 (20) 令Pi表示第i个素...

  • PAT-B 1013. 数素数 (20)

    传送门 https://www.patest.cn/contests/pat-b-practise/1013 题目...

  • 1013

    //1013 数素数 (20)(20 分)//令Pi表示第i个素数。现任给两个正整数M <= N <= 104,请...

  • 1003 数素数(20)-JAVA

    题目描述令Pi表示第i个素数。现任给两个正整数M <= N <= 10000,请输出PM到PN的所有素数。 输入描...

  • 1013 数素数 (20 分)

  • 1003 数素数 (20)——python

    题目描述 令Pi表示第i个素数。现任给两个正整数M <= N <= 10000,请输出PM到PN的所有素数。 输入...

网友评论

      本文标题:1013. 数素数 (20)

      本文链接:https://www.haomeiwen.com/subject/yjivcxtx.html