pat乙级1013. 数素数 (20)

欢迎访问我的pat乙级题解目录哦https://blog.csdn.net/richenyunqi/article/details/84981369

题目描述

pat乙级1013. 数素数 (20)_第1张图片

算法设计

定义两个循环变量i和j,i负责从2开始枚举所有的正整数,j负责记录已经枚举过多少素数,当i为素数时,判断j是否在之间,如果在,就输出i。当 时即可跳出循环。

C++代码

#include 
using namespace std;
using gg = long long;
bool isPrime(gg n) {
    if (n < 2)  // n小于2,一定不是素数
        return false;
    for (gg i = 2; i <= (gg)sqrt(n); ++i)  //遍历2~根号n所有的数
        if (n % i == 0)  // n能被i整除,说明n不是素数
            return false;
    return true;  // n不能被2~n任何数整除,则n是素数
}
int main() {
    ios::sync_with_stdio(false);
    cin.tie(0);
    gg mi, ni;
    cin >> mi >> ni;
    for (gg i = 2, j = 0; j <= ni; ++i) {
        if (isPrime(i)) {
            ++j;
            if (j >= mi and j <= ni) {
                cout << i << ((j - mi + 1) % 10 == 0 or j == ni ? '\n' : ' ');
            }
        }
    }
    return 0;
}

 

你可能感兴趣的:(pat乙级)