c实现从一个数组中挑选出所有素数
时间: 2023-03-25 11:02:27 浏览: 84
可以使用循环遍历数组中的每一个数,然后判断该数是否为素数。判断素数的方法可以使用试除法,即将该数除以2到该数的平方根之间的所有数,如果都不能整除,则该数为素数。如果该数为素数,则将其存入另一个数组中。最后输出存储素数的数组即可。
相关问题
c语言基础用指针找出一个整形数组中的所有素数,存放到另一个数组中,打印出该数组中的素数,并返回素数的个数
好的,下面是使用指针的 C 语言代码,用于找出一个整型数组中的所有素数,将其存放到另一个数组中,并打印出该数组中的素数,并返回素数的个数。
```c
#include <stdio.h>
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 findPrimes(int* arr, int size, int* primeArr) {
int primeCount = 0;
for (int i = 0; i < size; i++) {
if (isPrime(*(arr + i))) {
*(primeArr + primeCount) = *(arr + i);
primeCount++;
}
}
return primeCount;
}
int main() {
int arr[] = {2, 3, 4, 5, 6, 7, 8, 9, 10};
int size = sizeof(arr) / sizeof(arr[0]);
int primeArr[size];
int primeCount = findPrimes(arr, size, primeArr);
printf("素数数组:");
for (int i = 0; i < primeCount; i++) {
printf("%d ", primeArr[i]);
}
printf("\n素数个数:%d\n", primeCount);
return 0;
}
```
运行该代码,输出为:
```
素数数组:2 3 5 7
素数个数:4
```
这段代码与之前给出的代码类似,只是使用了指针来操作数组元素。在 `findPrimes` 函数中,我们使用指针来访问数组元素,并将素数存入 `primeArr` 数组中,同时返回素数的个数。然后在 `main` 函数中打印出素数数组和素数的个数。
希望这个答案对你有帮助!如果还有其他问题,请随时提问。
用c语言实现把200以内的所有素数存放到一维数组中并输出
好的,我可以帮您解答这个问题。以下是用 C 语言实现将 200 以内的所有素数存放到一维数组中并输出的代码:
```c
#include <stdio.h>
int main() {
int i, j, flag, count = 0;
int primes[46]; // 最多有46个素数
primes[count++] = 2; // 先将2加入素数数组中
// 从3开始遍历所有奇数,判断是否为素数
for (i = 3; i <= 200; i += 2) {
flag = 1; // 假设i为素数
// 遍历2到i-1之间的所有数,判断是否能整除i
for (j = 2; j < i; j++) {
if (i % j == 0) {
flag = 0; // i能被j整除,不是素数
break;
}
}
if (flag) {
primes[count++] = i; // 将素数加入数组中
}
}
// 输出所有素数
printf("200以内的素数有:\n");
for (i = 0; i < count; i++) {
printf("%d ", primes[i]);
}
printf("\n");
return 0;
}
```
解释一下代码:
首先定义一个数组 `primes`,用来存放所有素数。因为200以内的素数最多有46个,所以数组大小为46。然后将2加入素数数组中(2是最小的素数)。
接着从3开始遍历所有奇数,判断是否为素数。如果一个数能被2整除,那么它不是素数,因此我们只需要遍历所有奇数。假设当前遍历的数 `i` 是素数,然后遍历2到i-1之间的所有数,判断是否能整除i。如果能整除,那么i不是素数,将标志位 `flag` 设为0,跳出循环。如果不能整除,那么i可能是素数,继续遍历下一个数。
当遍历完所有奇数后,数组 `primes` 中存放了所有素数。最后遍历素数数组,输出所有素数。