Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 分离素数和复合数的矩阵,然后对它们进行排序_C_Matrix - Fatal编程技术网

C 分离素数和复合数的矩阵,然后对它们进行排序

C 分离素数和复合数的矩阵,然后对它们进行排序,c,matrix,C,Matrix,我不知道怎么做。。如果有人帮忙我会很感激的, 在矩阵中,素数先出现,然后是复合数,排序是按列进行的 这里有一个例子 输入: 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

我不知道怎么做。。如果有人帮忙我会很感激的, 在矩阵中,素数先出现,然后是复合数,排序是按列进行的

这里有一个例子

输入:

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

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

请提供您试图解决的问题。不管这个例子如何,我都不理解这个问题。输出与输入的关系如何?请重新表述这个问题。所以你想重新组织矩阵,让素数从左到右按顺序排列,其余的在。。。随机序列?@Codor输入是一个带有一些随机数的规则矩阵3x3,输出是按列排序的,素数排在第一位,如你所见,然后是复合数。输出刚刚排序。这是一个例子,它不是一个真正的矩阵,是吗?这是一个三列打印的线性阵列。顺便说一句,第2列中的25和15不是素数,也没有排序,所以也许你应该使用另一种解释方法。Thaks Alt Pixy!看起来你是这一页上最棒的家伙;由于素数确定比较困难,所以最好对“is prime”属性进行分区,然后对两个子序列进行排序。不过,这是可行的。是的,最好提前处理,因为iPrime很可能被称为同一质数的倍数。
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;
}