编写函数int gmval(int m ,int x[], int y[]),用c语言编写将小于整数m的所有素数依次保存到x指向的数组中,将这些素数的反序数依次保存到y指向的数组中,函数返回x指向数组中保存的素数个数。
时间: 2024-02-28 17:53:19 浏览: 51
C语言函数一些容易犯错错误的例子
下面是实现该函数的C语言代码:
```c
#include <stdio.h>
// 判断一个数是否为素数
int is_prime(int n) {
if (n <= 1) return 0;
for (int i = 2; i * i <= n; i++) {
if (n % i == 0) return 0;
}
return 1;
}
// 将小于m的素数依次保存到x数组中,将反序数依次保存到y数组中
int gmval(int m, int x[], int y[]) {
int cnt = 0;
for (int i = 2; i < m; i++) {
if (is_prime(i)) {
x[cnt] = i;
int t = i, r = 0;
while (t > 0) {
r = r * 10 + t % 10;
t /= 10;
}
y[cnt] = r;
cnt++;
}
}
// 反转y数组
for (int i = 0, j = cnt - 1; i < j; i++, j--) {
int t = y[i];
y[i] = y[j];
y[j] = t;
}
return cnt;
}
int main() {
int m = 30;
int x[100], y[100];
int cnt = gmval(m, x, y);
printf("小于%d的素数有%d个,分别为:", m, cnt);
for (int i = 0; i < cnt; i++) {
printf("%d ", x[i]);
}
printf("\n它们的反序数分别为:");
for (int i = 0; i < cnt; i++) {
printf("%d ", y[i]);
}
printf("\n");
return 0;
}
```
该函数先判断每个数是否为素数,如果是素数则将其保存到x数组中,并计算其反序数保存到y数组中。最后再将y数组反转一下,得到的就是所有素数的反序数。最后函数返回x数组中保存的素数个数。
阅读全文