编写一个函数将一个数组中的素数挑出来放进另一数组中
时间: 2024-12-25 16:31:07 浏览: 3
编写一个函数用于筛选数组中的素数并将其放入另一个数组,通常需要遍历每个数,检查它是否满足素数条件(即只有1和其本身能整除)。以下是这个功能的一个简单示例,使用Python语言:
```python
def is_prime(n):
if n <= 1:
return False
for i in range(2, int(n**0.5) + 1):
if n % i == 0:
return False
return True
def extract_primes(arr):
primes = []
for num in arr:
if is_prime(num):
primes.append(num)
return primes
# 示例输入数组
input_array = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
result = extract_primes(input_array)
print(f"提取出的素数有:{result}")
相关问题
用c语言编写一个函数将一个数组中的素数挑出来放进另一数组中
在C语言中,我们可以编写一个函数来找出数组中的素数,并将其放入另一个数组中。首先,我们需要一个辅助函数用于判断一个数是否为素数。以下是简单的实现步骤:
```c
#include <stdio.h>
#include <stdbool.h>
// 辅助函数,判断一个数是否为素数
bool is_prime(int num) {
if (num <= 1)
return false;
for (int i = 2; i * i <= num; i++) { // 避免检查大到超过平方根的因子
if (num % i == 0)
return false;
}
return true;
}
// 函数:找出数组中的素数并存入新数组
void find_primes(int input_array[], int size, int output_array[]) {
int prime_count = 0; // 记录素数的数量
for (int i = 0; i < size; i++) {
if (is_prime(input_array[i])) {
output_array[prime_count++] = input_array[i]; // 如果找到素数,添加到output数组
}
}
// 将实际找到的素数数目填充到output数组末尾
output_array[prime_count] = '\0'; // 假设所有元素都是字符类型,便于表示数组结束
}
int main() {
int numbers[] = {2, 3, 4, 5, 6, 7, 8, 9, 10};
int primes_size = sizeof(numbers)/sizeof(numbers[0]);
int primes[numbers_size]; // 新建一个足够大的数组存储素数
find_primes(numbers, primes_size, primes);
// 输出结果
printf("素数:");
for (int i = 0; primes[i] != '\0'; i++) {
printf("%d ", primes[i]);
}
printf("\n");
return 0;
}
```
这个程序首先定义了一个`is_prime`函数来检测输入的数是否为素数,然后在`find_primes`函数中遍历输入数组,将素数放入新数组。注意这里假设了输出数组足够大,如果需要动态调整大小,可以使用动态内存分配。
用c语言 在main中定义一个二维数组,完成以下操作: (1)编写函数input,给数组中的所有元素赋以100一999之间的随机数; (2) 编写函数output,输出数组元素中的值; (3) 编写函数,将二维数组中的所有质数挑出来放在一个一维数组中; (4)最后输出质数数组。
以下是实现代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define ROW 5
#define COL 5
// 判断是否为质数
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;
}
// 随机生成100到999之间的整数
int randInt() {
return rand() % 900 + 100;
}
// 给二维数组赋随机数
void input(int arr[][COL], int row, int col) {
srand((unsigned int)time(NULL));
for (int i = 0; i < row; i++) {
for (int j = 0; j < col; j++) {
arr[i][j] = randInt();
}
}
}
// 输出二维数组
void output(int arr[][COL], int row, int col) {
for (int i = 0; i < row; i++) {
for (int j = 0; j < col; j++) {
printf("%d ", arr[i][j]);
}
printf("\n");
}
}
// 挑选质数到一维数组
void pickPrime(int arr[][COL], int row, int col, int primeArr[], int *len) {
for (int i = 0; i < row; i++) {
for (int j = 0; j < col; j++) {
if (isPrime(arr[i][j])) {
primeArr[(*len)++] = arr[i][j];
}
}
}
}
int main() {
int arr[ROW][COL];
int primeArr[ROW * COL];
int len = 0;
input(arr, ROW, COL);
printf("二维数组:\n");
output(arr, ROW, COL);
pickPrime(arr, ROW, COL, primeArr, &len);
printf("质数数组:\n");
for (int i = 0; i < len; i++) {
printf("%d ", primeArr[i]);
}
printf("\n");
return 0;
}
```
代码解析:
首先定义了常量 `ROW` 和 `COL` 分别表示二维数组的行数和列数。然后定义了三个函数 `input`、`output` 和 `pickPrime` 分别用于给二维数组赋随机数、输出二维数组和挑选质数到一维数组。
`input` 函数中使用了 `srand` 函数来初始化随机数种子,保证每次运行程序生成的随机数不同。然后使用 `randInt` 函数生成100到999之间的整数,赋值给二维数组的每个元素。
`output` 函数中使用两层循环遍历二维数组,输出每个元素。
`pickPrime` 函数中同样使用了两层循环遍历二维数组,判断每个元素是否为质数,如果是就加入到一维数组 `primeArr` 中,并增加 `len` 的值。
在 `main` 函数中先定义了二维数组 `arr` 和一维数组 `primeArr`,以及变量 `len` 表示质数数组的长度。然后调用 `input` 函数给二维数组赋随机数,输出二维数组。接着调用 `pickPrime` 函数将二维数组中的质数挑选出来放在一维数组 `primeArr` 中,并计算质数数组的长度。最后输出一维数组 `primeArr`。
注意:在定义二维数组 `arr` 和一维数组 `primeArr` 时,一维数组的长度应该为二维数组总共的元素个数,即 `ROW * COL`。
阅读全文