栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

【C++】1013 数素数

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【C++】1013 数素数

令 P​i​​ 表示第 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

 浅析(具体分析按照代码)

       创建一个动态数组,其空间为N-M+1,用来保存M~N范围内的素数;

       循环判断素数,并计数;将满足范围内的数组存入数组中;

       遍历数组输出,计数输出个数,被10整除换行输出。

代码

#include
#include
using namespace std;

//判断是否是素数
bool isprime(int a) {
    for (int i = 2; i <= sqrt(a); i++) {
        if (a % i == 0)
            return false;
    }
    return true;
}

int main(void) {
    int M, N;
    int a[10000];
    int num = 2;
    cin >> M >> N;

    for (int i = 1; i < 10000; num++) {
        //判断num是否是素数
        if (isprime(num)) 
        {
            if (i >= M)
                a[i] = num;
            //序号+1
            i++;
        }
    }

    for (int i = 0; i < (N - M) + 1;)
        for (int j = 0; j < 10 && i < (N - M) + 1; j++) {
            if (j != 9 && i != (N - M))
                cout << a[M + i] << " ";
            else cout << a[M + i] << endl;
            i++;
        }
    return 0;
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1011352.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号