有空的可以帮我看看 给我一点思路!

编写函数,求出二维数组中小于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;
    
}