② 编写一c语言程序,找出1-200之间所有的质数并按降序存放在一维数组中,并输出数组该数组前十项的数组元素的值。
时间: 2024-12-25 07:24:30 浏览: 9
在C语言中,我们可以编写一个函数来检查一个数字是否为质数,然后遍历1到200之间的所有数字,将质数添加到一个动态分配的一维数组中。最后,我们输出这个数组的前十个元素。以下是详细的步骤和代码示例:
```c
#include <stdio.h>
#include <stdlib.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 limit, int* primesArray, int* count) {
*count = 0;
for (int i = 2; i <= limit; i++) {
if (isPrime(i)) {
primesArray[*count] = i;
(*count)++;
}
}
primesArray = realloc(primesArray, sizeof(int) * (*count)); // 调整数组大小
return primesArray;
}
int main() {
int limit = 200;
int* primes = NULL;
int primeCount;
primes = findPrimes(limit, primes, &primeCount);
if (!primes) {
printf("Error allocating memory.\n");
return 1;
}
// 输出前十个质数
printf("The first 10 prime numbers in descending order are:\n");
for (int i = 0; i < min(10, primeCount); i++) {
printf("%d ", primes[i]);
}
free(primes); // 释放内存
return 0;
}
```
在这个程序中,`findPrimes`函数负责查找和存储质数,`isPrime`函数判断质数,而主函数则调用这两个函数并将结果输出。
阅读全文