当前位置:首页 C++ > 正文

c++求第M个到第N个数之间所有素数

作者:野牛程序员:2024-07-04 11:04:20 C++阅读 2237
c++求第M个到第N个素数之间所有素数

题目描述 

令Pi表示第i个素数。现任给两个正整数M <= N <= 10000,请输出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++程序,能够根据输入的M和N值输出从第M到第N的素数,每10个数字占1行,其间以空格分隔,但行末不得有多余空格:

#include <iostream>
#include <vector>

// 判断一个数是否为素数
bool isPrime(int num) {
    if (num <= 1) return false;
    for (int i = 2; i * i <= num; i++) {
        if (num % i == 0) return false;
    }
    return true;
}

// 获取第M个到第N个数之间的所有素数
std::vector<int> getPrimesBetween(int M, int N) {
    std::vector<int> primes;
    int count = 0;
    int num = 2;
    
    while (count < N) {
        if (isPrime(num)) {
            count++;
            if (count >= M) {
                primes.push_back(num);
            }
        }
        num++;
    }
    
    return primes;
}

int main() {
    int M, N;
    std::cin >> M >> N;

    std::vector<int> primes = getPrimesBetween(M, N);

    for (size_t i = 0; i < primes.size(); i++) {
        if (i > 0 && i % 10 == 0) {
            std::cout << std::endl;
        }
        if (i % 10 != 0) {
            std::cout << " ";
        }
        std::cout << primes[i];
    }
    std::cout << std::endl;

    return 0;
}

程序说明

  1. isPrime 函数用于判断一个数是否为素数。

  2. getPrimesBetween 函数用于获取第M个到第N个数之间的所有素数。

  3. main 函数中,读取输入的M和N值,调用getPrimesBetween函数获取素数列表,并按照每行最多10个数字的格式输出结果。


野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892
野牛程序员教少儿编程与信息学竞赛-微信|电话:15892516892
  • c++
  • 最新推荐

    热门点击