欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

PAT (Basic Level) Practice (中文)1013 数素数 (20)

程序员文章站 2024-03-19 08:38:22
...

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

这题就让你输出第M个到第N个素数,先用while循环到第N个素数,然后再注意一下格式输出就行了

#include<iostream>
#include<math.h>
using namespace std;
int IsPrime(int num);
int main()
{
    int M,N;
    cin>>M>>N;
    int PriNum[N];
    int i=0;
    int j=2;
    while(i<N)
    {
        //如果是素数 
        if(IsPrime(j))
        {
            PriNum[i++]=j;
            j++;
        }
        else
        {
            //如果不是素数 往后找 
            j++;

        }
    }
    int index=0;
    for(int i=M-1;i<N;i++)
    {
        if(index!=0&&index%10!=0)
        {
            cout<<" ";
        }
        cout<<PriNum[i];
        index++;
        if(index%10==0)
        {
            cout<<endl;
        }
    }
}
//判断是否是素数 
int IsPrime(int num)
{
    if(num<2)
    {
        return 0;
    }
    //注意i是<= 
    for(int i=2;i<=sqrt(num);i++)
    {
        if(num%i==0)
        {
            return 0;
        }
    }
    return 1;
}