Related Articles
Find the number of integers x in range (1,N) for which x and x+1 have same number of divisors
• Last Updated : 27 May, 2019

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: 1
Divisors(1) = 1
Divisors(2) = 1 and 2
Divisors(3) = 1 and 3
Only valid x is 2.

Input: N = 15
Output: 2

## Recommended: Please try your approach on {IDE} first, before moving on to the solution.

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

 ``
Output:
```2
```

Attention reader! Don’t stop learning now. Get hold of all the important mathematical concepts for competitive programming with the Essential Maths for CP Course at a student-friendly price. To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.

My Personal Notes arrow_drop_up