PAT 乙级 -- 1013 -- 数素数

题目简介

令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

思路

此题数据量太小,只需用最简单的素数定义法即可。

C++代码样例

#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <iostream>
#include <cmath>

using namespace std;

int prime[10005];

bool isPrime(int i)
{
    for(int j = 2; j <= (int)sqrt(i); j++)
    {
        if(i % j == 0)
        {
            return false;
        }
    }
    return true;
}

int main(void)
{
    int num = 0;
    int i = 0;
    int begin = 0, end = 0;
    int count = 1;
    memset(prime, 0, sizeof(prime));
    scanf("%d %d", &begin, &end);
    for(i = 2;; i++)
    {
        if(num == end)
        {
            break;
        }
        if(isPrime(i))
        {
            prime[num++] = i;
        }
    }
    for(i = begin - 1; i <= end - 1; i++)
    {
        if(count % 10 != 0)
        {
            if(i == end - 1)
            {
                printf("%d", prime[i]);
                break;
            }
            printf("%d ", prime[i]);
            count++;
        }
        else
        {
            printf("%d
", prime[i]);
            count++;
        }
    }
    return 0;
}
原文地址:https://www.cnblogs.com/csnd/p/12897029.html