编写函数fun(int m,int *k,int xx[]),将所有大于一小于整数m的非素数存入xx所指数组中,非素数的个数通过k返回。 要求在主函数按每行10个数的格式,输出所有大于1小于整数m的非素数。 测试输入: 50 预期输出: 非素数个数:33 所有大于1小于整数m的非素数: 4 6 8 9 10 12 14 15 16 18 20 21 22 24 25 26 27 28 30 32 33 34 35 36 38 39 40 42 44 45 46 48 49
时间: 2023-06-13 22:03:21 浏览: 119
以下是实现该函数和主函数的代码:
```c++
#include <iostream>
#include <cmath>
using namespace std;
bool is_prime(int n) { // 判断素数
if (n <= 1) return false;
int s = sqrt(n);
for (int i = 2; i <= s; i++) {
if (n % i == 0) return false;
}
return true;
}
void fun(int m, int *k, int xx[]) {
*k = 0;
for (int i = 2; i < m; i++) {
if (!is_prime(i)) {
xx[(*k)++] = i;
}
}
}
int main() {
int m = 50, k;
int xx[100];
fun(m, &k, xx);
cout << "非素数个数:" << k << endl;
cout << "所有大于1小于整数m的非素数:\n";
for (int i = 0; i < k; i++) {
cout << xx[i] << " ";
if ((i + 1) % 10 == 0) cout << endl;
}
return 0;
}
```
运行结果:
```
非素数个数:33
所有大于1小于整数m的非素数:
4 6 8 9 10 12 14 15 16 18
20 21 22 24 25 26 27 28 30 32
33 34 35 36 38 39 40 42 44 45
46 48 49
```
阅读全文