写一个输出素数的c++程序
时间: 2023-01-11 17:55:36 浏览: 87
这是一个简单的程序,它会输出 2 到 100 之间的所有素数:
```
#include <stdio.h>
#include <stdbool.h>
int main(void) {
for (int i = 2; i <= 100; i++) {
bool is_prime = true;
for (int j = 2; j < i; j++) {
if (i % j == 0) {
is_prime = false;
break;
}
}
if (is_prime) {
printf("%d\n", i);
}
}
return 0;
}
```
程序的流程如下:
1. 在 `for` 循环中遍历 2 到 100 的所有数。
2. 对于每个数 `i`,再使用一个 `for` 循环检查是否有小于 `i` 的数能够整除 `i`。
3. 如果找到能够整除 `i` 的数,就说明 `i` 不是素数,将变量 `is_prime` 设为 `false` 并终止循环。
4. 如果没有找到能够整除 `i` 的数,就说明 `i` 是素数,输出 `i` 并继续遍历。
相关问题
用c++写一个判断素数的程序
以下是一个用 C++ 写的判断素数的程序:
```cpp
#include <iostream>
using namespace std;
bool isPrime(int n) {
if (n <= 1) {
return false;
}
for (int i = 2; i < n; i++) {
if (n % i == 0) {
return false;
}
}
return true;
}
int main() {
int n;
cout << "请输入一个正整数:";
cin >> n;
if (isPrime(n)) {
cout << n << "是素数。" << endl;
} else {
cout << n << "不是素数。" << endl;
}
return 0;
}
```
这个程序中,我们通过 `isPrime` 函数来判断一个数是否为素数。如果这个数小于等于1,那么它不是素数;否则,我们从2开始循环到这个数的前一个数,如果在循环中发现这个数可以被循环中的某个数整除,那么它就不是素数。最后,如果循环结束后还没有找到能整除它的数,那么这个数就是素数。
在 `main` 函数中,我们读入一个正整数,并调用 `isPrime` 函数来判断它是否为素数,最后输出结果。
编写一个判断素数的C++程序
以下是一个判断素数的C++程序:
```c++
#include <iostream>
#include <cmath>
using namespace std;
bool isPrime(int n) {
if (n < 2) return false; // 0 和 1 不是素数
if (n == 2 || n == 3) return true; // 2 和 3 是素数
if (n % 2 == 0 || n % 3 == 0) return false; // 排除偶数和 3 的倍数
int sqrtn = sqrt(n);
for (int i = 5; i <= sqrtn; i += 6) { // 只需判断 6k ± 1 的数
if (n % i == 0 || n % (i + 2) == 0)
return false;
}
return true;
}
int main() {
int n;
cout << "请输入一个整数:";
cin >> n;
if (isPrime(n)) {
cout << n << " 是素数。" << endl;
} else {
cout << n << " 不是素数。" << endl;
}
return 0;
}
```
该程序使用了著名的「6k ± 1」定理,即一个大于 3 的自然数若不是 2 的倍数,则一定可以表示成 6k ± 1 的形式,其中 k 是一个自然数。
程序中的函数 `isPrime` 接受一个整数作为参数,返回一个布尔值,表示该数是否为素数。函数中首先排除了 0 和 1,然后判断 2 和 3 是否为素数,接着排除了偶数和 3 的倍数,最后使用上述定理判断其他数是否为素数。函数中的变量 `sqrtn` 表示该数的平方根,可以减少循环次数。
在 `main` 函数中,程序先读入一个整数,然后调用 `isPrime` 函数判断该数是否为素数,最后输出结果。
阅读全文