用c++写并且输出所有素数
时间: 2023-04-08 09:00:39 浏览: 123
以下是用 C 语言写并输出所有素数的代码:
#include <stdio.h>
int main() {
int n, i, j, flag;
printf("请输入一个正整数:");
scanf("%d", &n);
printf("1-%d 之间的素数有:\n", n);
for (i = 2; i <= n; i++) {
flag = 1; // 假设 i 是素数
for (j = 2; j <= i / 2; j++) {
if (i % j == 0) {
flag = 0; // i 不是素数
break;
}
}
if (flag == 1) {
printf("%d ", i);
}
}
return 0;
}
相关问题
用C++格式写函数判断素数,然后输出200以内的所有素数。(要求:采用bool类型)
以下是一个C++函数,用于判断一个数是否为素数,并且使用该函数输出200以内的所有素数。
```cpp
#include <iostream>
#include <cmath>
bool isPrime(int num) {
if (num <= 1) return false; // 小于等于1的数不是素数
if (num <= 3) return true; // 2和3是素数
if (num % 2 == 0 || num % 3 == 0) return false; // 排除能被2和3整除的数
// 只检查到sqrt(num)即可,因为如果num有一个因子大于其平方根,
// 那么它必然还有一个小于或等于其平方根的因子。
for (int i = 5; i * i <= num; i += 6) {
if (num % i == 0 || num % (i + 2) == 0) return false;
}
return true;
}
int main() {
for (int i = 2; i <= 200; ++i) {
if (isPrime(i)) {
std::cout << i << " ";
}
}
std::cout << std::endl;
return 0;
}
```
解释:
1. `isPrime` 函数首先检查数字是否小于等于1(不是素数),以及是否是2或3(这两种是最小的素数)。
2. 对于大于3的数,我们首先排除所有能被2和3整除的数,这样可以提高效率。
3. 然后,我们使用一个循环来检查是否有任何小于或等于当前数字平方根的数能够整除它。循环变量`i`从5开始,每次增加6,这样可以同时检查`i`和`i + 2`,因为除了2和3之外的所有素数都可以表示为`6k ± 1`的形式。
4. `main` 函数中,我们遍历从2到200的所有数字,使用`isPrime`函数检查每个数字是否为素数,如果是,则输出。
写一个判断1-10000质数,并且输出的c++代码
以下是一个判断1-10000质数的C语言代码:
```c
#include <stdio.h>
int main() {
int i, j, flag;
for (i = 2; i <= 10000; i++) {
flag = 1;
for (j = 2; j <= i / 2; j++) {
if (i % j == 0) {
flag = 0;
break;
}
}
if (flag == 1) {
printf("%d ", i);
}
}
return 0;
}
```
该代码使用了两个嵌套的for循环,外层循环从2开始到10000结束,内层循环从2开始到i的一半结束。对于每个i,内层循环判断i是否能被2到i的一半之间的任意一个数整除,如果可以,则标记flag为0并退出内层循环,表示i不是质数;否则,flag为1表示i是质数,并输出i。
阅读全文
相关推荐













