编程实现,已有NXM的矩阵,对矩阵的全部元素做如下变换,若该数是素数则置0,否则置1。输出变换后的矩阵
#include<stdio.h>
int main()
{
int arr[500][500] = { 0 };
int n = 0;
int m = 0;
int i = 0;
int j = 0;
scanf("%d%d", &n, &m);
for (i = 0; i < n; ++i)
{
for (j = 0; j < m; ++j)
{
scanf("%d", &arr[i][j]);
}
}
for (i = 0; i < n; ++i)
{
for (j = 0; j < m; ++j)
{
//判断是否是素数
if (arr[i][j] == 0 || arr[i][j] == 1 || arr[i][j] == 2)
{
arr[i][j] = 1;
}
int num = 0;
for (num = 2; num < arr[i][j]; ++num)
{
if (arr[i][j] % num == 0)
{
arr[i][j] = 1;
}
else
{
arr[i][j] = 0;
}
}
}
}
for (i = 0; i < n; ++i)
{
for (j = 0; j < m; ++j)
{
printf("%d ", arr[i][j]);
}
printf("\n");
}
return 0;
}
供参考:
#include<stdio.h>
#define N 100
int main()
{
int arr[N][N] = { 0 },n,m,i,j,k,flg;
scanf("%d%d", &n, &m);
for (i = 0; i < n; ++i)
for (j = 0; j < m; ++j)
scanf("%d", &arr[i][j]);
for (i = 0; i < n; ++i)
{
for (j = 0; j < m; ++j)
{
if (arr[i][j] <= 3){
arr[i][j] = arr[i][j] > 1 ? 0 : 1;
}
else{
for (k = 2 ,flg = 1;flg && k * k <= arr[i][j]; k++)
if (arr[i][j] % k == 0) flg = 0;
arr[i][j] = (flg == 1 ? 0 : 1);
}
}
}
for (i = 0; i < n; i++)
{
for (j = 0; j < m; j++)
{
printf("%d ", arr[i][j]);
}
printf("\n");
}
return 0;
}