PTA刷题Basic篇——1013.数素数——Day(7)

问题描述

在这里插入图片描述给定两个正整数m,n,找出第m个素数和第n个素数之间的所有素数,包括第m个素数。

题目分析

我们我可以创建一个数组,以n为参数,即找出从第一个到第n个之间的所有素数,将他们存到一个数组中。然后我们就可以直接从数组中取出第m到第n个素数并输出。
注意输出格式,满10换行,最后一个数不能有空格。

代码

#include <iostream>
#include <math.h>
#include <vector>
using namespace std;
void createPrim(int n,vector<int> &a)
{
    int count = 0;
    for(int i = 2;;i++)
    {
        int flag = 0;
        for(int j = 2;j <= sqrt(i);j++)
        {
            if(i % j == 0)
            {
                flag = 1;
                break;
            }
        }
        if(flag == 0)
        {
            a.push_back(i);
            count++;
            if(count == n)
                break;
        }
    }
}
int main()
{
    int m,n;
    cin>>m>>n;
    vector<int>prim;
    createPrim(n,prim);
    int count = 0;//记录当前输出素数的个数
    for(int i = m - 1;i < n;i++)
    {
        count++;//记录当前输出素数的个数
   
        if(count % 10 != 0 and count != n - m + 1)
            cout<<prim[i]<<" ";
        //虽然当前不满10,但是已经是最后一个素数了,所以仍然不能输出空格
        else if(count == n - m + 1)
            cout<<prim[i];
        else
            cout<<prim[i]<<endl;
    }
    return 0;
}

总结

答题用时9min
Q13——finish√

发布了60 篇原创文章 · 获赞 2 · 访问量 1064

猜你喜欢

转载自blog.csdn.net/weixin_44755413/article/details/105507305