PAT乙级1013

1013 数素数 (20分)

题目地址:https://pintia.cn/problem-sets/994805260223102976/problems/994805309963354112

令\(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个素数,而不是输出m到n之间的素数。

代码段

#include <iostream>
#include <iomanip>
#include <math.h>
#include <stdlib.h>

using namespace std;
// 判断x是否为素数
bool isPrime(int x);

int main() {
    int m, n;
    int format = 0;
    int counter = 0;
    cin >> m >> n;
    // 输出从1到无穷 第m到n个素数
    // 质数又称素数。指整数在一个大于1的自然数中,除了1和此整数自身外,没法被其他自然数整除的数。
    // 换句话说,只有两个正因数(1和自己)的自然数即为素数。
    // 比1大但不是素数的数称为合数。1和0既非素数也非合数。
    for (int i = 2; counter <= n; ++i) {
        if (isPrime(i)) {
            counter++;
            if (counter >= m && counter <= n) {
                if (format == 9) {
                    cout << i << endl;
                    format = 0;
                } else {
                    if (counter == n) {
                        cout << i;
                    } else {
                        cout << i << " ";
                    }
                    format++;
                }
            }
        }
    }
    return 0;
}

bool isPrime(int x) {
    if (x == 2 || x == 3) {
        return true;
    }
    int limit = (int) sqrt(x);
    int i;
    for (i = 2; i <= limit; ++i) {
        if (x % i == 0) {
            break;
        }
    }
    return i > limit;
}

原文地址:https://www.cnblogs.com/another-7/p/12170355.html

时间: 2024-12-17 01:37:38

PAT乙级1013的相关文章

PAT乙级 1013. 数素数 (20)

1013. 数素数 (20) 时间限制 100 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 令Pi表示第i个素数.现任给两个正整数M <= N <= 104,请输出PM到PN的所有素数. 输入格式: 输入在一行中给出M和N,其间以空格分隔. 输出格式: 输出从PM到PN的所有素数,每10个数字占1行,其间以空格分隔,但行末不得有多余空格. 输入样例: 5 27 输出样例: 11 13 17 19 23 29 31 37 4

PAT乙级1013.数素数

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 #inc

PAT 乙级 1013. 数素数 (20)

令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 1 #include<cstdio> 2 #include&

PAT 乙级 1013

还是审题没把范围看清楚,没一次AC 题中m和n都表示第几个素数,范围是10000,所以查询的数组中需要的素数量至少10000,所以需要计算大概2~120000的整数才能查到10000个素数 #include <iostream> #include <cmath> #include <vector> using namespace std; bool prime(int x) { for (int i = 2; i <= sqrt(x); i++) { if (x

PAT 乙级真题 1013.组个最小数

PAT 乙级真题 1013.组个最小数 题目描述 给定数字0-9各若干个.你可以以任意顺序排列这些数字,但必须全部使用.目标是使得最后得到的数尽可能小(注意0不能做首位).例如: 给定两个0,两个1,三个5,一个8,我们得到的最小的数就是10015558. 现给定数字,请编写程序输出能够组成的最小的数. 输入格式 每个输入包含1个测试用例.每个测试用例在一行中给出10个非负整数,顺序表示我们拥有数字0.数字1.--数字9的个数.整数间用一个空 格分隔.10个数字的总个数不超过50,且至少拥有1个

1054. 求平均值 (20)-PAT乙级真题

今天刚刚到学校,2017年学习正式开始了,今天看到了浙大的<数据结构>这学期又要开课了,决定一定要跟着学习一遍:在大学生mooc网上学习:http://www.icourse163.org/course/zju-93001#/info :然后就是跟着<算法之美>也要同步看完. 然后就在PAT上随便做一道题,这是第一次通过AC,发现了两个比较好的博客主页:http://www.liuchuo.net/  和  https://www.joyhwong.com/   都总结了刷题的过程

PAT乙级1034. 有理数四则运算(20)

本题要求编写程序,计算2个有理数的和.差.积.商. 输入格式: 输入在一行中按照“a1/b1 a2/b2”的格式给出两个分数形式的有理数,其中分子和分母全是整型范围内的整数,负号只可能出现在分子前,分母不为0. 输出格式: 分别在4行中按照“有理数1 运算符 有理数2 = 结果”的格式顺序输出2个有理数的和.差.积.商.注意输出的每个有理数必须是该有理数的最简形式“k a/b”,其中k是整数部分,a/b是最简分数部分:若为负数,则须加括号:若除法分母为0,则输出“Inf”.题目保证正确的输出中没

PAT乙级1006题python3代码

PAT乙级1006题python3代码 目录 PAT乙级1006题python3代码 目录 代码 题目: 让我们用字母B来表示"百".字母S表示"十",用"12-n"来表示个位数字n(<10),换个格式来输出任一个不超过3位的正整数.例如234应该被输出为BBSSS1234,因为它有2个"百".3个"十".以及个位的4. 输入格式:每个测试输入包含1个测试用例,给出正整数n(<1000). 输出

PAT 乙级 1045

题目 题目地址:PAT 乙级 1045 题解 本题的解法比较巧妙,刚开始的试着用暴力求解,果不其然时间超限-- 变换思路,既然对于每个元素来说满足的条件是前小后大,那么对数组排序,对应的位置相等的即为题设要求的"可能主元",但是还有一个条件要保证当前是从左向右遍历的最大值:总结一下两个条件:1. 排序后对应位置数字相等:2. 当前操作元素是从左向右遍历中的最大值 同时还要注意,当输入n值为0时,除了需要输出"可能主元"的个数之外,还需要保留换行符'\n' 代码 1