编写c程序,用筛选法求解 200 以内的所有素数并带格式输出
时间: 2023-07-15 22:15:49 浏览: 46
以下是使用筛选法求解200以内的所有素数的C程序,并带有格式化输出:
```c
#include <stdio.h>
#define MAX 200
int main()
{
int prime[MAX+1] = {0}; // 初始化数组
int i, j;
// 筛选法求素数
for (i = 2; i*i <= MAX; i++) {
if (!prime[i]) { // 如果当前数为素数
for (j = i*i; j <= MAX; j += i) {
prime[j] = 1; // 将当前数的倍数标记为非素数
}
}
}
// 输出素数
printf("2 ");
for (i = 3; i <= MAX; i += 2) { // 只输出奇数
if (!prime[i]) {
printf("%d ", i);
}
}
return 0;
}
```
输出结果:
```
2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97 101 103 107 109 113 127 131 137 139 149 151 157 163 167 173 179 181 191 193 197 199
```
相关问题
用C编写程序,用筛选法求解200以内所有素数,并带格式输出
好的,以下是用C语言编写的用筛选法求解200以内所有素数,并带格式输出的程序:
```c
#include <stdio.h>
#include <stdbool.h>
#define MAX_NUM 200
#define PER_LINE 10
int main() {
bool is_prime[MAX_NUM + 1];
int i, j, count = 0;
// 初始化数组
for (i = 2; i <= MAX_NUM; i++) {
is_prime[i] = true;
}
// 筛选法求素数
for (i = 2; i * i <= MAX_NUM; i++) {
if (is_prime[i]) {
for (j = i * i; j <= MAX_NUM; j += i) {
is_prime[j] = false;
}
}
}
// 输出素数
printf("The prime numbers between 2 and %d are:\n", MAX_NUM);
for (i = 2; i <= MAX_NUM; i++) {
if (is_prime[i]) {
printf("%4d ", i);
count++;
if (count % PER_LINE == 0) {
printf("\n");
}
}
}
printf("\n");
return 0;
}
```
在输出时,我们设置了每行输出10个素数,方便查看。输出效果如下:
```
The prime numbers between 2 and 200 are:
2 3 5 7 11 13 17 19 23 29
31 37 41 43 47 53 59 61 67 71
73 79 83 89 97 101 103 107 109 113
127 131 137 139 149 151 157 163 167 173
179 181 191 193 197 199
```
用C语言编写程序,用筛选法求解200以内的所有素数并带格式输出。
好的,以下是C语言的代码实现:
```c
#include <stdio.h>
#include <stdbool.h>
#define MAX 201 // 定义要判断素数的范围
int main() {
bool prime[MAX]; // 定义素数标记数组,初始所有数都为素数
int i, j, count = 0;
for (i = 2; i < MAX; i++) {
prime[i] = true;
}
prime[0] = prime[1] = false;
// 筛选法求素数
for (i = 2; i * i <= MAX; i++) {
if (!prime[i]) {
continue;
}
for (j = i * i; j < MAX; j += i) {
prime[j] = false;
}
}
// 格式化输出素数
for (i = 2; i < MAX; i++) {
if (prime[i]) { // 如果是素数
count++;
printf("%-5d", i);
if (count % 10 == 0) { // 每行输出10个素数
printf("\n");
}
}
}
return 0;
}
```
输出结果为:
```
2 3 5 7 11 13 17 19 23 29
31 37 41 43 47 53 59 61 67 71
73 79 83 89 97 101 103 107 109 113
127 131 137 139 149 151 157 163 167 173
179 181 191 193 197 199
```
其中,`prime`数组中的每个元素表示该下标对应的数是否为素数,`true`表示是素数,`false`表示不是素数。外层循环从2开始到200,内层循环从当前素数的平方开始,每次加上该素数,标记所有能被该素数整除的数为非素数。最后,按照每行输出10个素数的格式输出所有素数。