c语言先建立一个数组赋值为2-100再用二重循环标记每个素数的倍数为0,最后打印出为被标记不为0的数即为素数 #include "stdio.h"#define&nb
时间: 2024-10-16 22:11:36 浏览: 43
C语言判断一个数是否为素数方法解析
5星 · 资源好评率100%
在这个例子中,我们将创建一个数组,并用`for`循环填充从2到100的整数,然后遍历数组,用另一个嵌套循环标记所有非素数的倍数为0。最后,我们会再次遍历数组并只打印那些值仍为非零的元素,即素数。
以下是完整的C代码:
```c
#include <stdio.h>
#define SIZE 100
int isPrime(int num) {
if (num <= 1) return 0;
for (int i = 2; i * i <= num; i++) {
if (num % i == 0) return 0;
}
return 1;
}
int main() {
int arr[SIZE];
for (int i = 0; i < SIZE; i++) {
arr[i] = i + 2; // 初始化数组,从2开始(因为1不是素数)
}
for (int i = 0; i < SIZE; i++) {
if (arr[i] > 1 && isPrime(arr[i])) { // 只对大于1的数进行检查
// 标记素数的倍数为0
for (int j = 2; j * j <= arr[i]; j++) {
if (arr[i] % j == 0) {
arr[j * i / j] = 0; // 数组下标应取arr[i]/j而非i*j, 因为j可能小于i
}
}
}
}
printf("素数:\n");
for (int i = 0; i < SIZE; i++) {
if (arr[i]) {
printf("%d ", i + 2); // 回溯原始索引,因为我们初始化时跳过了1
}
}
return 0;
}
```
阅读全文