矩阵分离质数和复合然后对它们进行排序

Matrix separating prime numbers and composite then sorts them

我不知道该怎么做..如果有人帮忙,我将不胜感激, 在矩阵中,质数在前,合数在前,按列排序,

这是一个例子。

输入:

25  3  7
11 15 32
16  9 19

输出:

 3 19 32
 7 25 16
11 15  9

可能与排序无关。只需找到下一个质数并将其插入当前位置即可:

25 3 7 11 15 32 16 9 19

3 25 7 11 15 32 16 9 19
3 7 25 11 15 32 16 9 19
3 7 11 25 15 32 16 9 19
3 7 11 19 25 15 32 16 9

3 19 32
7 25 16
11 15 9

我们将矩阵按行转换为行,然后按列恢复矩阵。无论如何,这个例子是模糊的。

int cmp(const void *a, const void *b){
    int x = *(const int *)a;
    int y = *(const int *)b;
    int bx = isPrime(x);//0 or 1
    int by = isPrime(y);
    if(bx ^ by)
        return by - bx;
    else
        return x < y ? -1 : x > y;
}

int main(void){
    int i, j;
    int m[3][3] = {
        { 25,  3, 7},
        { 11, 15, 32},
        { 16,  9, 19}
    };
    qsort(&m[0][0], sizeof(m)/sizeof(m[0][0]), sizeof(m[0][0]), cmp);
    for(i=0;i<2;++i){
        for(j=i+1;j<3;++j){
            int temp = m[i][j];
            m[i][j]  = m[j][i];
            m[j][i]  = temp;
        }
    }
    for(i=0;i<3;++i){
        for(j=0;j<3;++j)
            printf("%3d ", m[i][j]);
        printf("\n");
    }
    return 0;
}