编写函数,该函数的功能是,将所有大于1小于整数m的非素数存入xx数组中, 非素数的个数通过k传回。整数m的值由主函数输入。程序文件名102.c。输入测试数据:17程序运行结果: 4 6 8 9 10 12 14 15 16
时间: 2023-06-11 21:08:50 浏览: 97
七次上机实验内容素数和数学计算PPT学习教案.pptx
以下是实现上述功能的102.c程序代码:
```c
#include <stdio.h>
// 判断一个数是否为素数
int isPrime(int n) {
if (n <= 1) return 0;
for (int i = 2; i * i <= n; i++) {
if (n % i == 0) return 0;
}
return 1;
}
// 将所有大于1小于整数m的非素数存入xx数组中,非素数的个数通过k传回
void getNonPrimes(int m, int xx[], int *k) {
*k = 0;
for (int i = 2; i < m; i++) {
if (!isPrime(i)) {
xx[(*k)++] = i;
}
}
}
int main() {
int m = 17;
int xx[100], k;
getNonPrimes(m, xx, &k);
for (int i = 0; i < k; i++) {
printf("%d ", xx[i]);
}
printf("\n");
return 0;
}
```
程序中的 `isPrime` 函数用于判断一个数是否为素数,采用的是试除法,时间复杂度为 $O(\sqrt{n})$。
`getNonPrimes` 函数则是根据输入的整数 m,遍历从 2 到 m-1 的所有整数,将非素数存入 xx 数组中,并通过指针 k 返回非素数的个数。
在主函数中,我们输入 m=17,然后调用 `getNonPrimes` 函数,将结果存入 xx 数组中,并遍历输出。
阅读全文