在保持文件输出的同时限制控制台输出? C++

Limit console output while maintaining output to file? C++

语言:C++

我的任务是编写一个程序,允许用户输入 30 到 2000 之间的数字,并列出不超过该数字的质数。例如,用户输入数字 50.. 然后程序将找到 3 到 50 之间的每个质数并将其显示到控制台。我编写的代码就是这样做的。

第二组指令说将控制台输出限制为仅 10 个质数(无论用户输入什么),但将所有质数写入文件。

使用与之前相同的示例..这些是 3 到 50 之间的素数: 2 3 5 7 11 13 17 19 23 29 31 37 41 43 47

控制台只需要显示其中的 10 个数字,其余的则写入文件。在将 ALL(无论多少)写入文件时,我是否可以在我的控制台上只显示 10 个整数?

提前感谢您的阅读,如果您需要更多信息来回答问题,请给我留言。

bool isPrime;

   for(int n = 2; n < integer; n++) {

      isPrime = isPrimeNumber(n);

      if(isPrime == true)
          cout<<n<<" ";
   }
   return 0;
}

int isPrimeNumber(int n) {
   bool isPrime = true;

   for(int i = 2; i <= n/2; i++) {
      if (n%i == 0) {
         isPrime = false;
         break;
      }
   }
   return isPrime;

您只需要一个计数器变量来跟踪您调用 cout 的次数。

//open file
int counter = 0;    

for(int n = 2; n < integer; n++){ 
    isPrime = isPrimeNumber(n); 

    if(isPrime == true){
        if(counter < 10){
            cout<<n<<" ";
            counter++;
        }
        //Write to file
    }
}
//Close file 

加分:

isPrimeNumber returns 一个 bool 所以你的函数应该看起来像:

bool isPrimeNumber(int n)

然后您可以在 for 循环中删除您的 'isPrime' 变量,只需说:

if(isPrimeNumber(n))

如果您未指定比较,If 语句将隐式检查值是否为真。

您还可以稍微优化您的 isPrimeNumber 函数,方法是将其更改为以下内容(再次消除对 isPrime 变量的需要):

bool isPrimeNumber(int n){

    for(int i = 2; i <= n/2; i++){ 
        if (n%i == 0) return false;
    } 
    return true;
}