请编写函数fun,其功能是: 将所有大于1小于整数m的非素数存入xx所指数组中, 非素数的个数通过k传回。
时间: 2023-12-08 16:04:30 浏览: 111
```
#include <stdio.h>
#include <math.h>
void fun(int m, int *xx, int *k)
{
int count = 0; // 计数器,记录非素数的个数
int i, j;
for(i = 2; i < m; i++)
{
for(j = 2; j <= sqrt(i); j++)
{
if(i % j == 0) // i不是素数
{
xx[count] = i; // 将i存入数组xx中
count++; // 非素数个数加1
break; // 跳出循环,i不需要再进行判断
}
}
}
*k = count; // 将非素数个数传回
}
int main()
{
int m = 20;
int xx[100] = {0}; // 初始化数组
int k; // 非素数个数
fun(m, xx, &k);
printf("非素数个数为:%d\n", k);
int i;
for(i = 0; i < k; i++)
{
printf("%d ", xx[i]);
}
printf("\n");
return 0;
}
```
相关问题
c语言实现只用一个函数fun,其功能是: 将所有大于1小于整数m的非素数存入xx所指数组中, 非素数的个数通过k传回
以下是一个实现:
```
#include <stdio.h>
#include <stdbool.h>
void fun(int m, int xx[], int *k) {
*k = 0; // 初始化非素数个数为0
for (int i = 2; i < m; i++) {
bool is_prime = true;
for (int j = 2; j < i; j++) {
if (i % j == 0) {
is_prime = false;
break;
}
}
if (!is_prime) {
xx[*k] = i; // 将非素数存入数组中
(*k)++; // 非素数个数加1
}
}
}
int main() {
int m = 20;
int xx[10];
int k;
fun(m, xx, &k);
printf("非素数个数:%d\n", k);
printf("非素数:");
for (int i = 0; i < k; i++) {
printf("%d ", xx[i]);
}
printf("\n");
return 0;
}
```
运行结果:
```
非素数个数:8
非素数:4 6 8 9 10 12 14 15
```
请编写函数fun,其功能是:将所有大于1小于整数m的非素数存入 xx所指数组中,非素数的个数通过k传回。 例如,若输入:17,则应输出:4689 10 12 14 15 16。
void fun(int m, int *x, int &k){
k = ;
for(int i=2; i<m; i++){
bool isPrime = true;
for(int j=2; j<i; j++){
if(i%j == ){
isPrime = false;
break;
}
}
if(!isPrime){
x[k++] = i;
}
}
}
//调用方式
int x[100], k;
fun(17, x, k);
for(int i=; i<k; i++){
cout << x[i] << " ";
}
cout << endl;
//输出结果:4 6 8 9 10 12 14 15 16
阅读全文