给定整数N。任务是找到整数1
例子:
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
方法:找到N以下所有数字的除数,并将它们存储在数组中。并通过运行循环来计算整数x的数量,以使x和x + 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