Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/137.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 打印第1000个素数 #包括 使用名称空间std; int main(){ int ctr=0; int count=1;//计算第n个素数 int num=3; int div=2;//数字的潜在因子 while(count_C++ - Fatal编程技术网

C++ 打印第1000个素数 #包括 使用名称空间std; int main(){ int ctr=0; int count=1;//计算第n个素数 int num=3; int div=2;//数字的潜在因子 while(count

C++ 打印第1000个素数 #包括 使用名称空间std; int main(){ int ctr=0; int count=1;//计算第n个素数 int num=3; int div=2;//数字的潜在因子 while(count,c++,C++,通常有助于将这样的代码重构为具有明确定义和可测试行为的函数。例如,代码的内部是一个“isPrime”函数,如果您这样定义它: #include <iostream> using namespace std; int main(){ int ctr = 0; int count = 1; //Counts the nth prime number int num = 3; int div = 2; //Potential factors of t

通常有助于将这样的代码重构为具有明确定义和可测试行为的函数。例如,代码的内部是一个“
isPrime
”函数,如果您这样定义它:

#include <iostream>

using namespace std;

int main(){

    int ctr = 0;
    int count = 1; //Counts the nth prime number
    int num = 3;
    int div = 2;  //Potential factors of the number

    while(count <= 1000){
        while(div < num){  
            if(num%div == 0){ 
            ctr += 1; //If ctr is equal to 0, then num is prime
            }
            div += 1;
        }
        if(ctr == 0){ //If num is prime, count increases by 1
            count += 1;
        }
        num += 1;
    }   
    cout << num;
}

至于为什么你的代码不起作用。你应该调试它。逐行检查,看看它与你的期望有什么不同。从查找第三个素数开始,而不是第1000个素数

你的
isPrime
部分没有完成它应该做的事情。找出原因并不难,作为一个调试练习,你肯定应该这样做,而不是从stackoverflow得到一个简单的答案。

\35;包括
  int primeCount = 0;
  int n = 1;
  while (primeCount < 1000) {
    if (isPrime(n++)) {
      ++primeCount;
    }
  }
  --n;
  std::cout << n << std::endl;
int main(){ int ctr=0; int count=1;//计算第n个素数 int num=3; int div=2;//数字的潜在因子
虽然(count你从未重置过
div
ctr
的值。你在课堂上讨论过调试程序了吗?仔细检查你的代码会发现问题所在。我明白了。@Daniel,谢谢你提醒我。另外,我将
count=1
更改为
count=2
,这修复了所有问题。这对提高性能有什么帮助s检查Desivable by 2,3,然后加两次,因为如果Desivable by偶数,则可以跳过检查numbers@Simon当然可以。我猜这是一个家庭作业,而性能不是第一要务。动态规划会更有帮助。
  int primeCount = 0;
  int n = 1;
  while (primeCount < 1000) {
    if (isPrime(n++)) {
      ++primeCount;
    }
  }
  --n;
  std::cout << n << std::endl;
#include <stdio.h>




int main(){

int ctr = 0;
int count = 1; //Counts the nth prime number
int num = 3;
int div = 2;  //Potential factors of the number

while(count <= 1000){
    while(div < num){  
        if(num%div == 0){ 
        ctr += 1; //If ctr is equal to 0, then num is prime
        }
        div += 1;
    }
    if(ctr == 0){ //If num is prime, count increases by 1
        count += 1;
    }
    num += 1;
    ctr=0;
    div=2;
}   
printf("%d",num);
}