# Count entries equal to x in a special matrix

You are given a square matrix (matrix[][]) of order n, where matrix[i][j] = i*j. Find the number of cells which have entry equal to a given number x. **NOte** : Indexing of matrix starts from 1, i.e. 1<= i,j <= n.

**Examples :**

Input : matrix[][] = {1, 2, 3, 4, 2, 4, 6, 8, 3, 6, 9, 12, 4, 8, 12, 16} x = 4 Output : 3 Input : matrix[][] = {1, 2, 3, 4, 2, 4, 6, 8, 3, 6, 9, 12, 4, 8, 12, 16} x = 12 Output : 2

A **simple Approach** is to traverse the whole of matrix and check whether cell value is equal to given x and then increase count value accordingly. Time complexity in this approach is quite high and is equal to O(n^2) and space complexity O(1).

// traverse and check whole matrix for (int i=1; i<=n ; i++) { for (int j=1; j<=n; j++) if (i * j == x) count++; } // return count return count;

An **efficient approach** is to only find the number of factors of given x in the range 0 to x and also those factors (including divisor and quotient ) must be less than or equal to n (order of matrix). In this case time complexity will be O(n) and space complexity O(1).

// traverse and find the factors for (int i=1; i<=n && i<=x ; i++) { // x%i == 0 means i is factor of x // x/i <= n means i and j are <= n (for i*j=x) if ( x/i <= n && x%i ==0) count++; } // return count return count;

**Implementation:**

## C++

`// CPP program for counting number of cell ` `// equals to given x` `#include<bits/stdc++.h>` `using` `namespace` `std;` `// function to count factors as number of cell` `int` `count (` `int` `n, ` `int` `x)` `{` ` ` `int` `count=0;` ` ` `// traverse and find the factors` ` ` `for` `(` `int` `i=1; i<=n && i<=x ; i++)` ` ` `{` ` ` `// x%i == 0 means i is factor of x` ` ` `// x/i <= n means i and j are <= n (for i*j=x)` ` ` `if` `( x/i <= n && x%i ==0)` ` ` `count++;` ` ` `}` ` ` `// return count ` ` ` `return` `count;` `}` `// driver program` `int` `main()` `{` ` ` `int` `n = 8;` ` ` `// we can manually assume matrix of order 8*8` ` ` `// where mat[i][j] = i*j , 0<i,j<=n` ` ` `int` `x = 24;` ` ` `cout << count(n, x);` ` ` `return` `0;` `} ` |

## Java

`// Java program for counting number of` `// cell equals to given x` `class` `GFG` `{` ` ` `// function to count factors as ` ` ` `// number of cell` ` ` `static` `int` `count (` `int` `n, ` `int` `x)` ` ` `{` ` ` `int` `count = ` `0` `;` ` ` ` ` `// traverse and find the factors` ` ` `for` `(` `int` `i = ` `1` `; i <= n && i <= x ;` ` ` `i++)` ` ` `{` ` ` `// x%i == 0 means i is factor` ` ` `// of x. x/i <= n means i and` ` ` `// j are <= n (for i*j=x)` ` ` `if` `( x / i <= n && x % i == ` `0` `)` ` ` `count++;` ` ` `}` ` ` ` ` `// return count ` ` ` `return` `count;` ` ` `}` ` ` `// driver program` ` ` `public` `static` `void` `main(String args[])` ` ` `{` ` ` `int` `n = ` `8` `;` ` ` ` ` `// we can manually assume matrix ` ` ` `// of order 8*8 where ` ` ` `// mat[i][j] = i*j , 0<i,j<=n` ` ` `int` `x = ` `24` `;` ` ` `System.out.println(count(n, x));` ` ` `}` `}` `/*This code is contributed by Danish kaleem*/` |

## Python3

`# Python 3 program for counting ` `# number of cell equals to given x ` `# function to count factors ` `# as number of cell ` `def` `count(n, x):` ` ` `cnt ` `=` `0` ` ` `# traverse and find the factors ` ` ` `for` `i ` `in` `range` `(` `1` `, n ` `+` `1` `):` ` ` `# // x%i == 0 means i is factor of x ` ` ` `# x/i <= n means i and j are <= n (for i*j=x) ` ` ` `if` `i <` `=` `x:` ` ` `if` `x ` `/` `/` `i <` `=` `n ` `and` `x ` `%` `i ` `=` `=` `0` `:` ` ` `cnt ` `+` `=` `1` ` ` `return` `cnt` `# Driver code` `n ` `=` `8` `x ` `=` `24` `print` `(count(n, x))` `# This code is contributed by Shrikant13` |

## C#

`// C# program for counting number` `// of cell equals to given x` `using` `System; ` `class` `GFG {` ` ` ` ` `// function to count factors as ` ` ` `// number of cell` ` ` `static` `int` `count (` `int` `n, ` `int` `x) {` ` ` ` ` `int` `count = 0;` ` ` ` ` `// traverse and find the factors` ` ` `for` `(` `int` `i = 1; i <= n && ` ` ` `i <= x ; i++)` ` ` `{` ` ` ` ` `// x%i == 0 means i is factor` ` ` `// of x. x/i <= n means i and` ` ` `// j are <= n (for i*j=x)` ` ` `if` `( x / i <= n && x % i == 0)` ` ` `count++;` ` ` `}` ` ` ` ` `// return count ` ` ` `return` `count;` ` ` `}` ` ` `// Driver Code` ` ` `public` `static` `void` `Main()` ` ` `{` ` ` `int` `n = 8;` ` ` ` ` `// we can manually assume matrix ` ` ` `// of order 8*8 where ` ` ` `// mat[i][j] = i*j , 0<i,j<=n` ` ` `int` `x = 24;` ` ` `Console.Write(count(n, x));` ` ` `}` `}` `// This code is contributed by Nitin Mittal.` |

## PHP

`<?php` `// PHP program for counting ` `// number of cell equals to` `// given x` `// function to count factors` `// as number of cell` `function` `c_ount ( ` `$n` `, ` `$x` `)` `{` ` ` `$Count` `= 0;` ` ` `// traverse and find the factors` ` ` `for` `( ` `$i` `= 1; ` `$i` `<= ` `$n` `and` ` ` `$i` `<= ` `$x` `; ` `$i` `++)` ` ` `{` ` ` `// x%i == 0 means i is ` ` ` `// factor of x x/i <= n ` ` ` `// means i and j are ` ` ` `// <= n (for i*j=x)` ` ` `if` `( ` `$x` `/ ` `$i` `<= ` `$n` `and` ` ` `$x` `% ` `$i` `== 0)` ` ` `$Count` `++;` ` ` `}` ` ` `// return count ` ` ` `return` `$Count` `;` `}` `// Driver Code` `$n` `= 8;` `// we can manually assume ` `// matrix of order 8*8` `// where mat[i][j] = i*j , ` `// 0<i,j<=n` `$x` `= 24;` `echo` `c_ount(` `$n` `, ` `$x` `);` `// This code is contributed by anuj_67.` `?>` |

## Javascript

`<script>` `// Javascript program for counting number of cell ` `// equals to given x` `// function to count factors as number of cell` `function` `count (n, x)` `{` ` ` `var` `count = 0;` ` ` `// traverse and find the factors` ` ` `for` `(` `var` `i=1; i<=n && i<=x ; i++)` ` ` `{` ` ` `// x%i == 0 means i is factor of x` ` ` `// x/i <= n means i and j are <= n (for i*j=x)` ` ` `if` `( x/i <= n && x%i ==0)` ` ` `count++;` ` ` `}` ` ` `// return count ` ` ` `return` `count;` `}` `// driver program` `var` `n = 8;` `// we can manually assume matrix of order 8*8` `// where mat[i][j] = i*j , 0<i,j<=n` `var` `x = 24;` `document.write( count(n, x));` `</script>` |

**Output**

4

**Time Complexity:** O(n) **Auxiliary Space: **O(1), since no extra space has been taken.

This article is contributed by **Aarti_Rathi**** **and **Shivam Pradhan (anuj_charm)**. If you like GeeksforGeeks and would like to contribute, you can also write an article using write.geeksforgeeks.org or mail your article to review-team@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.