编写函数,求出二维数组中小于n的所有质数并存放在数组中,返回所求质数的个数。在main函数中验证。要求:二维数组的行数、列数、数组元素、n均在main函数中由键盘输入。
下面是我的一个实现,供参考:
#include <stdio.h>
int findPrime(int rows ,int cols,int * nums,int n,int * result){
int i,k,number;
int t=0,flag=1;
printf("2\n");
for(i=0;i<rows*cols;i++){ //遍历数组
// printf("3\n");
number=nums[i];
// printf("number=%d\n",number);
if(number>=n){ //如果大于n,则开始测试数组下一个数
// printf("4\n");
continue;
}else{
for(k=2;k<number;k++){ //判断是否为质数
if(number%k==0){
// printf("5\n");
flag =0;
break;
}
}
if(flag==1){ //如果是质数,则存入数组,并记数
// printf("6\n");
result[t]=number;
// printf("i=%d,result[%d]=%d\n",i,t,result[t]);
t++;
}
flag = 1;
}
}
return t;
}
int main(void){
int rows,cols;
int i,j;
printf("请输入二维数组的行数,列数:\n");
scanf("%d%d",&rows,&cols);
int result[rows*cols];
int nums[rows][cols];
printf("请输入二维数组元素:\n");
for(i=0;i<rows;i++){
for(j=0;j<cols;j++){
scanf("%d",&nums[i][j]);
}
}
int n;
printf("请输入要小于多少的质数:\n");
scanf("%d",&n);
int * p = &nums[0][0];
//printf("1\n");
printf("二维数组里小于%d的质数有%d个。\n",n,findPrime(rows,cols,p,n,result));
return 0;
}