编写函数fun(int m, int *k, int xx[]),将所有大于1小于整数m的非素数存入xx所指数组中,非素数的个数通过k返回。(C语言)
时间: 2024-02-25 20:55:57 浏览: 181
江苏计算机上机考试题型解析1.pdf
以下是函数fun的代码实现:
```c
#include <stdio.h>
#include <math.h>
int is_prime(int n) { // 判断n是否为素数
if (n < 2) {
return 0;
}
for (int i = 2; i <= sqrt(n); i++) {
if (n % i == 0) {
return 0;
}
}
return 1;
}
void fun(int m, int *k, int xx[]) {
int cnt = 0; // 计数器,记录非素数的个数
for (int i = 2; i < m; i++) {
if (!is_prime(i)) { // 如果i不是素数
xx[cnt++] = i; // 将i存入xx数组中
}
}
*k = cnt; // 将非素数的个数通过k返回
}
int main() {
int m = 20;
int k, xx[100];
fun(m, &k, xx);
printf("非素数的个数为%d,它们分别是:\n", k);
for (int i = 0; i < k; i++) {
printf("%d ", xx[i]);
}
printf("\n");
return 0;
}
```
函数fun首先定义了一个计数器cnt,用于记录非素数的个数。然后从2到m-1遍历每一个整数i,如果i不是素数,则将其存入xx数组中,并将cnt加1。最后将cnt通过指针k返回即可。
is_prime函数用于判断一个整数n是否为素数,其原理是从2到sqrt(n)遍历每一个整数i,如果n能被i整除,则说明n不是素数,返回0;否则说明n是素数,返回1。
在main函数中,我们调用fun函数,并将m、k和xx数组作为参数传入。最后打印出非素数的个数和它们的值。
阅读全文