首页 > 解决方案 > C++寻找第n个素数

问题描述

我试图找到第 n 个素数。例如:输入 1 - 结果 2 ,输入 2 - 结果 3,输入 3 - 结果 5...

我的 isprime 函数目前可以工作,但我无法弄清楚,一定有什么问题,请帮忙,谢谢:)

/*
      Finding the nth Prime Number
              Yasin OSMAN
*/

//Including Libraries
#include <iostream>
using namespace std;

//Defining a global counter
int counter = 0;
/*
         Defining Functions
*/

//isPrime Function (returns true if the given number is prime)
bool isPrime(int n) {
    bool answer = true;
    for (int i = 2; i < n; i++) {
        if (n % i == 0) {
            answer = false;
        }
    }
    return answer;
}

int main() {
    int userInput;
    cout<<"Please indicate which prime number do you want to see: ";
    cin>>userInput;

    for(int i=0;i<=userInput;i++){
        if(isPrime(counter)){
            if(counter==userInput){
                cout<<counter<<"th prime number is : "<<i<<endl;
            }
            counter++;
        }
        counter++;
    }

    return 0;
}

标签: c++numbers

解决方案


感谢@MikeCAT

我将 isPrime 函数更改为小于 2 的数字,

bool isPrime(int n) {
    bool answer = true;
    if(n<2){
        answer=false;
        return answer;
    }
    if(n>=2){
        for (int i = 2; i < n; i++) {
            if (n % i == 0) {
                answer = false;
                return answer;
        }
    }
    return answer;
    }
}

我还让 nthPrime 成为一个函数,

int nthPrime(int n){
    double i;
    for(i=2;counter<n;i++){
        if(isPrime(i)){
            counter++;
        }
    }
    return i-1;
}

并显示结果我使用了以下代码:

int userInput;
    cout<<"Please indicate which prime number do you want to see: ";
    cin>>userInput;

    cout<<counter<<"th prime number is : "<<nthPrime(userInput);
    return 0;

输出示例:请指出你想看哪个素数:5第 5 个素数是:11


推荐阅读