用C++语言编写程序:输出0~n的素数?

如题所述

以下是用 C++ 语言编写程序输出 0~n 的素数的代码:
```cpp
#includeiostream>
using namespace std;
bool isPrime(int n) { // 判断是否为素数的函数
if (n <= 1) return false; // 小于等于1的数字不是素数
for (int i = 2; i * i <= n; i++) {
if (n % i == 0) return false;
}
return true;
}
int main() {
int n;
cout "请输入一个正整数 n:";
cin >> n;
cout "0~" << n << "之间的素数有:";
for (int i = 2; i <= n; i++) {
if (isPrime(i)) {
cout << i << " ";
}
}
return 0;
}
```
首先,定义了一个 `isPrime` 函数,用于判断一个数字是否为素数。该函数中使用了一个常见的优化技巧,即只需要遍历到i*i <= 输入值即可判断是否为素数。

然后在主函数中,首先读入一个正整数 `n`,然后遍历从 2 到 `n` 的所有数字,并通过调用 `isPrime` 函数来判断是否为素数。如果是,则输出该数字。最后返回 0 表示程序运行结束。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2023-06-13
以下是使用C++语言编写的程序,实现输出0~n之间的素数:
```c++
#include <iostream>
using namespace std;
int main()
{
int n;
cout << "请输入一个正整数n:";
cin >> n;
for (int i = 2; i <= n; i++) {
bool is_prime = true; // 标记i是否为素数
// 判断i是否为素数
for (int j = 2; j * j <= i; j++) {
if (i % j == 0) {
is_prime = false;
break;
}
}
// 如果i是素数,则输出它
if (is_prime) {
cout << i << " ";
}
}
cout << endl;
return 0;
}
```
运行结果:
```
请输入一个正整数n:20
2 3 5 7 11 13 17 19
```
说明:程序首先要求用户输入一个正整数n,然后使用两重循环分别枚举0~n之间的每个数字i和2~√i之间的每个数字j,判断i是否能被j整除。如果存在某个j使得i能够被它整除,那么i就不是素数;否则i就是素数,将其输出即可。需要注意的是,在第二重循环中,我们只需要枚举到√i就可以了,因为如果在2~√i之间都不存在i的因子,那么超过√i的部分也一定不存在i的因子。
相似回答
大家正在搜