# Find the number of integers x in range (1,N) for which x and x+1 have same number of divisors

• Last Updated : 17 Jan, 2022

Given an integer N. The task is to find the number of integers 1 < x < N, for which x and x + 1 have the same number of positive divisors.

Examples:

Input: N = 3
Output:
Divisors(1) = 1
Divisors(2) = 1 and 2
Divisors(3) = 1 and 3
Only valid x is 2.

Input: N = 15
Output:

Approach: Find the number of divisors of all numbers below N and store them in an array. And count the number of integers x such that x and x + 1 have the same number of positive divisors by running a loop.

Below is the implementation of the above approach:

## C++

 `// C++ implementation of the approach``#include ``using` `namespace` `std;``#define N 100005` `// To store number of divisors and``// Prefix sum of such numbers``int` `d[N], pre[N];` `// Function to find the number of integers``// 1 < x < N for which x and x + 1 have``// the same number of positive divisors``void` `Positive_Divisors()``{``    ``// Count the number of divisors``    ``for` `(``int` `i = 1; i < N; i++) {` `        ``// Run a loop upto sqrt(i)``        ``for` `(``int` `j = 1; j * j <= i; j++) {` `            ``// If j is divisor of i``            ``if` `(i % j == 0) {` `                ``// If it is perfect square``                ``if` `(j * j == i)``                    ``d[i]++;``                ``else``                    ``d[i] += 2;``            ``}``        ``}``    ``}` `    ``int` `ans = 0;` `    ``// x and x+1 have same number of``    ``// positive divisors``    ``for` `(``int` `i = 2; i < N; i++) {``        ``if` `(d[i] == d[i - 1])``            ``ans++;``        ``pre[i] = ans;``    ``}``}` `// Driver code``int` `main()``{``    ``// Function call``    ``Positive_Divisors();` `    ``int` `n = 15;` `    ``// Required answer``    ``cout << pre[n] << endl;` `    ``return` `0;``}`

## Java

 `// Java implementation of the approach``class` `GFG``{``    ` `static` `int` `N =``100005``;` `// To store number of divisors and``// Prefix sum of such numbers``static` `int` `d[] = ``new` `int``[N], pre[] = ``new` `int``[N];` `// Function to find the number of integers``// 1 < x < N for which x and x + 1 have``// the same number of positive divisors``static` `void` `Positive_Divisors()``{``    ``// Count the number of divisors``    ``for` `(``int` `i = ``1``; i < N; i++)``    ``{` `        ``// Run a loop upto sqrt(i)``        ``for` `(``int` `j = ``1``; j * j <= i; j++)``        ``{` `            ``// If j is divisor of i``            ``if` `(i % j == ``0``)``            ``{` `                ``// If it is perfect square``                ``if` `(j * j == i)``                    ``d[i]++;``                ``else``                    ``d[i] += ``2``;``            ``}``        ``}``    ``}` `    ``int` `ans = ``0``;` `    ``// x and x+1 have same number of``    ``// positive divisors``    ``for` `(``int` `i = ``2``; i < N; i++)``    ``{``        ``if` `(d[i] == d[i - ``1``])``            ``ans++;``        ``pre[i] = ans;``    ``}``}` `// Driver code``public` `static` `void` `main(String[] args)``{``    ``// Function call``    ``Positive_Divisors();` `    ``int` `n = ``15``;` `    ``// Required answer``    ``System.out.println(pre[n]);``}``}` `/* This code contributed by PrinciRaj1992 */`

## Python3

 `# Python3 implementation of the above approach``from` `math ``import` `sqrt;` `N ``=` `100005` `# To store number of divisors and``# Prefix sum of such numbers``d ``=` `[``0``] ``*` `N``pre ``=` `[``0``] ``*` `N` `# Function to find the number of integers``# 1 < x < N for which x and x + 1 have``# the same number of positive divisors``def` `Positive_Divisors() :``    ` `    ``# Count the number of divisors``    ``for` `i ``in` `range``(N) :` `        ``# Run a loop upto sqrt(i)``        ``for` `j ``in` `range``(``1``, ``int``(sqrt(i)) ``+` `1``) :` `            ``# If j is divisor of i``            ``if` `(i ``%` `j ``=``=` `0``) :` `                ``# If it is perfect square``                ``if` `(j ``*` `j ``=``=` `i) :``                    ``d[i] ``+``=` `1``                ``else` `:``                    ``d[i] ``+``=` `2` `    ``ans ``=` `0` `    ``# x and x+1 have same number of``    ``# positive divisors``    ``for` `i ``in` `range``(``2``, N) :``        ``if` `(d[i] ``=``=` `d[i ``-` `1``]) :``            ``ans ``+``=` `1``        ``pre[i] ``=` `ans``    ` `# Driver code``if` `__name__ ``=``=` `"__main__"` `:` `    ``# Function call``    ``Positive_Divisors()` `    ``n ``=` `15` `    ``# Required answer``    ``print``(pre[n])` `# This code is contributed by Ryuga`

## C#

 `// C# implementation of the approach``using` `System;` `class` `GFG``{``    ` `static` `int` `N =100005;` `// To store number of divisors and``// Prefix sum of such numbers``static` `int` `[]d = ``new` `int``[N];``static` `int` `[]pre = ``new` `int``[N];` `// Function to find the number of integers``// 1 < x < N for which x and x + 1 have``// the same number of positive divisors``static` `void` `Positive_Divisors()``{``    ``// Count the number of divisors``    ``for` `(``int` `i = 1; i < N; i++)``    ``{` `        ``// Run a loop upto sqrt(i)``        ``for` `(``int` `j = 1; j * j <= i; j++)``        ``{` `            ``// If j is divisor of i``            ``if` `(i % j == 0)``            ``{` `                ``// If it is perfect square``                ``if` `(j * j == i)``                    ``d[i]++;``                ``else``                    ``d[i] += 2;``            ``}``        ``}``    ``}` `    ``int` `ans = 0;` `    ``// x and x+1 have same number of``    ``// positive divisors``    ``for` `(``int` `i = 2; i < N; i++)``    ``{``        ``if` `(d[i] == d[i - 1])``            ``ans++;``        ``pre[i] = ans;``    ``}``}` `// Driver code``public` `static` `void` `Main(String[] args)``{``    ``// Function call``    ``Positive_Divisors();` `    ``int` `n = 15;` `    ``// Required answer``    ``Console.WriteLine(pre[n]);``}``}` `// This code has been contributed by 29AjayKumar`

## PHP

 ``

## Javascript

 ``
Output:
`2`

Time complexity: O(nlogn)

Auxiliary Space: O(n)

My Personal Notes arrow_drop_up