📌  相关文章
📜  查找范围(1,N)中x和x + 1具有相同除数的整数x

📅  最后修改于: 2021-05-06 19:20:24             🧑  作者: Mango

给定整数N。任务是找到整数1 ,其中xx + 1具有相同数量的正除数。

例子:

方法:找到N以下所有数字的除数,并将它们存储在数组中。并通过运行循环来计算整数x的数量,以使xx + 1具有相同数量的正除数。

下面是上述方法的实现:

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


输出:
2