矩阵分离质数和复合然后对它们进行排序
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;
}
我不知道该怎么做..如果有人帮忙,我将不胜感激, 在矩阵中,质数在前,合数在前,按列排序,
这是一个例子。
输入:
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;
}