编程实现,已有NXM的矩阵,对矩阵的全部元素做如下变换,若该数是素数则置0,否则置1。输出变换后的矩阵

编程实现,已有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;
}