C++ C++;求第n个素数
我在找第n个素数。 例如:输入1-结果2,输入2-结果3,输入3-结果5 我的iPrime功能目前可以正常工作,但我想不出来,一定是出了什么问题,请帮助,谢谢:)C++ C++;求第n个素数,c++,numbers,C++,Numbers,我在找第n个素数。 例如:输入1-结果2,输入2-结果3,输入3-结果5 我的iPrime功能目前可以正常工作,但我想不出来,一定是出了什么问题,请帮助,谢谢:) /* 求第n个素数 亚辛·奥斯曼 */ //包括图书馆 #包括 使用名称空间std; //定义全局计数器 int计数器=0; /* 定义功能 */ //isPrime函数(如果给定的数字是素数,则返回true) bool isPrime(int n){ bool-answer=true; for(int i=2;i
/*
求第n个素数
亚辛·奥斯曼
*/
//包括图书馆
#包括
使用名称空间std;
//定义全局计数器
int计数器=0;
/*
定义功能
*/
//isPrime函数(如果给定的数字是素数,则返回true)
bool isPrime(int n){
bool-answer=true;
for(int i=2;i 对于(int i=0;i改进isPrime
功能:
- 小于2的数字不是素数,所以先拒绝它们
感谢@MikeCAT
我把iPrime函数改成了小于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;
}
}
bool isPrime(int n){
bool-answer=true;
如果(n=2){
for(int i=2;i
我还做了一个函数
int nthPrime(int n){
double i;
for(i=2;counter<n;i++){
if(isPrime(i)){
counter++;
}
}
return i-1;
}
int-nthPrime(int-n){
双i;
对于(i=2;counter此isPrime
函数将错误地判断1或更少的数字为素数。在isPrime
函数中,当您执行answer=false
赋值时,为什么要继续循环?为什么不立即返回false
呢?您应该在循环中增加counter
两次吗在main
函数中?可能重复的yes我应该这样做,我在answer=false;@Someprogrammerdude之后返回false
int main() {
int userInput;
cout<<"Please indicate which prime number do you want to see: ";
cin>>userInput;
for(int i=0, counter=0;counter<=userInput;i++){ // note: the global "counter" is shadowed here
if(isPrime(i)){
counter++;
if(counter==userInput){
cout<<counter<<"th prime number is : "<<i<<endl;
}
}
}
return 0;
}
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;
}
}
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;