#include <stdio.h>#include <math.h>int main() { int primes[50] = {0}; // 初始化数组,所有元素都为0 int count = 0; // 记录素数的个数 for (int i = 2; i <= 50; i++) { int is_prime = 1; // 标记i是否为素数,默认为是 // 判断i是否为素数 for (int j = 2; j <= sqrt(i); j++) { if (i % j == 0) { is_prime = 0; // i能被j整除,不是素数 break; } } if (is_prime) { primes[count++] = i; // 将i存入数组,并将素数个数加1 } } // 输出素数数组 printf("2~50之间的素数:"); for (int i = 0; i < count; i++) { printf("%d ", primes[i]); } printf("\n"); return 0;}错误在哪
时间: 2023-12-03 14:42:42 浏览: 69
SeqList.h #include <stdio.h> //包含标准输入输出流的头文件 #include <assert.h
程序中没有明确说明错误,但是可以发现当i为2时,is_prime被赋值为1,但是没有将2存入素数数组中。因此,可以将初始化is_prime的值改为0,将2直接存入素数数组中即可解决这个问题。同时,也可以将素数数组的大小增加到更大的值,以便存储更多的素数。修正后的代码如下:
```c
#include <stdio.h>
#include <math.h>
int main() {
int primes[100] = {2}; // 初始化数组,将2存入素数数组中
int count = 1; // 记录素数的个数
for (int i = 3; i <= 50; i++) {
int is_prime = 0; // 标记i是否为素数,默认为不是
// 判断i是否为素数
for (int j = 2; j <= sqrt(i); j++) {
if (i % j == 0) {
is_prime = 1; // i能被j整除,不是素数
break;
}
}
if (!is_prime) {
primes[count++] = i; // 将i存入数组,并将素数个数加1
}
}
// 输出素数数组
printf("2~50之间的素数:");
for (int i = 0; i < count; i++) {
printf("%d ", primes[i]);
}
printf("\n");
return 0;
}
```
阅读全文