Related Articles
Construct a Binary Matrix whose sum of each row and column is a Prime Number
• Difficulty Level : Basic
• Last Updated : 30 Apr, 2021

Given an integer N, the task is to construct a binary matrix of size N * N such that the sum of each row and each column of the matrix is a prime number.

Examples:

Input: N = 2
Output:

```1 1
1 1```

Explanation:
Sum of 0th row = 1 + 1 = 2 (Prime number)
Sum of 1st row = 1 + 1 = 2 (Prime number)
Sum of 0th column = 1 + 1 = 2 (Prime number)
Sum of 1st column = 1 + 1 = 2 (Prime number)

Input: N = 4
Output:

```1 0 0 1
0 1 1 0
0 1 1 0
1 0 0 1 ```

Approach: Follow the steps below to solve the problem:

• Initialize a Binary matrix, say mat[][] of size N * N.
• Update all possible values of mat[i][i] to 1.
• Update all possible values of mat[i][N – i -1] to 1.
• If N is an odd number then update the value mat[N / 2] and mat[N / 2] to 1.

Below is the implementation of the above approach.

## C++

 `// C++ program to implement``// the above approach` `#include ``using` `namespace` `std;` `// Function to construct``// the required binary matrix``void` `constructBinaryMat(``int` `N)``{``    ``// Stores binary value with row``    ``// and column sum as prime number``    ``int` `mat[N][N];` `    ``// initialize the binary matrix mat[][]``    ``memset``(mat, 0, ``sizeof``(mat));` `    ``// Update all possible values of``    ``// mat[i][i] to 1``    ``for` `(``int` `i = 0; i < N; i++) {``        ``mat[i][i] = 1;``    ``}` `    ``// Update all possible values of``    ``// mat[i][N - i -1]``    ``for` `(``int` `i = 0; i < N; i++) {``        ``mat[i][N - i - 1] = 1;``    ``}` `    ``// Check if N is an odd number``    ``if` `(N % 2 != 0) {` `        ``// Update mat[N / 2] to 1``        ``mat[N / 2] = 1;` `        ``// Update mat[N / 2] to 1``        ``mat[N / 2] = 1;``    ``}` `    ``// Print required binary matrix``    ``for` `(``int` `i = 0; i < N; i++) {``        ``for` `(``int` `j = 0; j < N; j++) {``            ``cout << mat[i][j] << ``" "``;``        ``}``        ``cout << endl;``    ``}``}` `// Driver Code``int` `main()``{``    ``int` `N = 5;` `    ``constructBinaryMat(N);` `    ``return` `0;``}`

## Java

 `// Java program to implement``// the above approach``class` `GFG{` `// Function to construct``// the required binary matrix``static` `void` `constructBinaryMat(``int` `N)``{``  ``// Stores binary value with row``  ``// and column sum as prime number``  ``int` `mat[][] = ``new` `int``[N][N];` `  ``// Update all possible values``  ``// of mat[i][i] to 1``  ``for` `(``int` `i = ``0``; i < N; i++)``  ``{``    ``mat[i][i] = ``1``;``  ``}` `  ``// Update all possible values``  ``// of mat[i][N - i -1]``  ``for` `(``int` `i = ``0``; i < N; i++)``  ``{``    ``mat[i][N - i - ``1``] = ``1``;``  ``}` `  ``// Check if N is an odd``  ``// number``  ``if` `(N % ``2` `!= ``0``)``  ``{``    ``// Update mat[N / 2]``    ``// to 1``    ``mat[N / ``2``][``0``] = ``1``;` `    ``// Update mat[N / 2]``    ``// to 1``    ``mat[``0``][N / ``2``] = ``1``;``  ``}` `  ``// Print required binary matrix``  ``for` `(``int` `i = ``0``; i < N; i++)``  ``{``    ``for` `(``int` `j = ``0``; j < N; j++)``    ``{``      ``System.out.print(mat[i][j] + ``" "``);``    ``}``    ``System.out.println();``  ``}``}` `// Driver Code``public` `static` `void` `main(String[] args)``{``  ``int` `N = ``5``;``  ``constructBinaryMat(N);``}``}` `// This code is contributed by Chitranayal`

## Python3

 `# Python3 program to implement``# the above approach` `# Function to construct``# the required binary matrix``def` `constructBinaryMat(N):``    ` `    ``# Stores binary value with row``    ``# and column sum as prime number``    ``mat ``=` `[[``0` `for` `i ``in` `range``(N)]``              ``for` `i ``in` `range``(N)]` `    ``# Initialize the binary matrix mat[][]``    ``# memset(mat, 0, sizeof(mat));` `    ``# Update all possible values of``    ``# mat[i][i] to 1``    ``for` `i ``in` `range``(N):``        ``mat[i][i] ``=` `1` `    ``# Update all possible values of``    ``# mat[i][N - i -1]``    ``for` `i ``in` `range``(N):``        ``mat[i][N ``-` `i ``-` `1``] ``=` `1` `    ``# Check if N is an odd number``    ``if` `(N ``%` `2` `!``=` `0``):``        ` `        ``# Update mat[N / 2] to 1``        ``mat[N ``/``/` `2``][``0``] ``=` `1` `        ``# Update mat[N / 2] to 1``        ``mat[``0``][N ``/``/` `2``] ``=` `1` `    ``# Print required binary matrix``    ``for` `i ``in` `range``(N):``        ``for` `j ``in` `range``(N):``            ``print``(mat[i][j], end ``=` `" "``)``            ` `        ``print``()` `# Driver Code``if` `__name__ ``=``=` `'__main__'``:``    ` `    ``N ``=` `5` `    ``constructBinaryMat(N)``    ` `# This code is contributed by mohit kumar 29`

## C#

 `// C# program to implement``// the above approach``using` `System;``class` `GFG{` `// Function to construct``// the required binary matrix``static` `void` `constructBinaryMat(``int` `N)``{``  ``// Stores binary value with row``  ``// and column sum as prime number``  ``int` `[,]mat = ``new` `int``[N, N];` `  ``// Update all possible values``  ``// of mat[i,i] to 1``  ``for` `(``int` `i = 0; i < N; i++)``  ``{``    ``mat[i, i] = 1;``  ``}` `  ``// Update all possible values``  ``// of mat[i,N - i -1]``  ``for` `(``int` `i = 0; i < N; i++)``  ``{``    ``mat[i, N - i - 1] = 1;``  ``}` `  ``// Check if N is an odd``  ``// number``  ``if` `(N % 2 != 0)``  ``{``    ``// Update mat[N / 2,0]``    ``// to 1``    ``mat[N / 2, 0] = 1;` `    ``// Update mat[0,N / 2]``    ``// to 1``    ``mat[0, N / 2] = 1;``  ``}` `  ``// Print required binary matrix``  ``for` `(``int` `i = 0; i < N; i++)``  ``{``    ``for` `(``int` `j = 0; j < N; j++)``    ``{``      ``Console.Write(mat[i, j] + ``" "``);``    ``}``    ``Console.WriteLine();``  ``}``}` `// Driver Code``public` `static` `void` `Main(String[] args)``{``  ``int` `N = 5;``  ``constructBinaryMat(N);``}``}` `// This code is contributed by gauravrajput1`

## Javascript

 ``
Output:
```1 0 1 0 1
0 1 0 1 0
1 0 1 0 0
0 1 0 1 0
1 0 0 0 1```

Time Complexity: O(N2)
Auxiliary Space: O(N2)

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.  Get hold of all the important mathematical concepts for competitive programming with the Essential Maths for CP Course at a student-friendly price.

In case you wish to attend live classes with industry experts, please refer Geeks Classes Live and Geeks Classes Live USA

My Personal Notes arrow_drop_up