找出一个数组里的素数并输出成另一个新数组C语言
时间: 2024-03-17 15:45:48 浏览: 68
好的,那么我来用 C 语言实现这个功能。
```c
#include <stdio.h>
#include <stdbool.h>
bool is_prime(int num) {
if (num < 2) {
return false;
} else if (num == 2 || num == 3) {
return true;
} else if (num % 2 == 0) {
return false;
} else {
for (int i = 3; i * i <= num; i += 2) {
if (num % i == 0) {
return false;
}
}
return true;
}
}
int* find_prime_numbers(int* arr, int len, int* new_len) {
int* primes = (int*)malloc(len * sizeof(int));
int count = 0;
for (int i = 0; i < len; i++) {
if (is_prime(arr[i])) {
primes[count++] = arr[i];
}
}
*new_len = count;
return primes;
}
int main() {
int arr[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int len = sizeof(arr) / sizeof(int);
int new_len;
int* new_arr = find_prime_numbers(arr, len, &new_len);
for (int i = 0; i < new_len; i++) {
printf("%d ", new_arr[i]);
}
free(new_arr);
return 0;
}
```
在这个示例中,我们定义了一个 `is_prime` 函数来判断一个数是否为素数,同样地,我们通过遍历数组中的每个元素来判断它是否为素数,如果是素数则将其添加到新的数组中。
我们使用了动态内存分配来创建新的数组,因为我们不知道最终素数数组的大小,需要在计算出素数个数后再动态分配内存。
最后,我们在主函数中调用 `find_prime_numbers` 函数来查找素数,并将新数组打印到控制台上以进行测试。
阅读全文