语言: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返回一个布尔值,因此您的函数应类似于:
bool isPrimeNumber(int n)
然后您可以在for循环中摆脱'isPrime'变量,而只需说:
if(isPrimeNumber(n))
如果不指定比较,则隐式检查值是否为true。
您还可以通过将isPrimeNumber函数更改为以下内容来对其进行稍微优化:
bool isPrimeNumber(int n){
for(int i = 2; i <= n/2; i++){
if (n%i == 0) return false;
}
return true;
}