c++ - 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;
}
解决方案
感谢@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
推荐阅读
- spring - 从 Spring Profile 激活 Maven Profile
- aws-api-gateway - aws HTTP API 网关缓存中的 JWT 授权方是否会缓存公钥以避免重复调用授权服务器
- elasticsearch - ElasticSearch,如何获取“string_field”不在任何“list_field”中的文档?
- python - 临时重命名数据框列
- java - 持久化到 MySQL 数据库时 LocalDate 发生变化
- excel - 如何在文件夹而不是 Excel VBA 中的 CurrentDB 中定义访问数据库的路径?
- php - Laravel 错误的路由重定向导致 404
- php - Laravel 项目运行 php artisan serve 命令时出现未定义属性错误
- python - 如何使用 pygrib expand_reduce 功能?
- c++ - 处理子类的独特方法