如何从二维数组中找到素数?

时间:2019-04-23 01:44:10

标签: c++ arrays multidimensional-array

我需要在由随机数生成的二维数组中找到素数。我有两个功能funtion1和function2。 funtion1负责在二维数组中查找素数,之后应将素数保存到一维数组中,然后返回一维数组的大小。 function1负责打印一维数组。

function1接受2个参数,分别是二维数组和一维数组。 function2使用2个参数作为数组和数组的大小。

#include <iostream>
#include <stdlib.h>     /* srand, rand */
#include <time.h> 
using namespace std;

int function1(int arrayA[][15],int arrayB[] );
void function2(int array[],int x);

int main(int argc, char** argv) {

    int myA[10][15];

    int myB[150];

    srand(time(NULL));

    for (int i = 0; i < 10; i++) // ...initialize it
    {
        for (int j = 0; j < 14; j++) {

            int row = rand() % 401 + 100;
            int column = rand() % 401 + 100;

            myA[i][j] = row, column;

            cout<< myA[i][j]<< " ";
        }
        cout<<endl; 
    }

    int x=function1(myA,myB);

    function2(myB,x);
}


int function1(int arrayA[][15],int arrayB[] ){

    for (int i = 0; i < 10; i++)                                //accessing two dimensional array row
    {                                                                       
        for (int j = 0; j < 15; j++) {                          //accesing two dimensional array column

            for(int prime=2;prime<arrayA[i][j];prime++){        //for prime control

                if(arrayA[i][j]%prime!=0){

                    for(int k=0;k<150;k++){                     //keeping arrayA`s prime numbers in arrayB
                        arrayB[k]=arrayA[i][j];
                    }
                }
            }   
        }
    }
    int sizeB=sizeof(arrayB)/sizeof(arrayB[0]);
return sizeB;
}   

void function2(int array[],int x){

    for(int i=0;i<x-1;i++){
        cout<<array[i];
    }
}

我像上面那样编码解决方案,但是它只打印随机生成的二维数组,但我真正需要的是随机生成的二维数组和该数组的质数(function2的输出) 我没有任何编译错误。

谢谢!

1 个答案:

答案 0 :(得分:0)

功能1不会将质数添加到arrayB。该数组将填充一个数字。所有150个职位将有一个不一定是素数的数字。最终检查将是2D数组%中的最后一个数字(本身减去一个),该数字将不为0。因此,所有arrayB都将是该数字。

函数1应该总是返回150。

函数2之所以没有输出,是因为函数1访问了未初始化的存储位置或数组位置。因此,没有告诉您该内存位置中的内容。看一下如何在main中填充myA。

这段代码很草率。您需要密切注意所做的事情。如果它对您不起作用,那么在编写代码时就不会起作用。