Compruebe si un par de números dados son números prometidos o no

Dados dos números positivos N y M , la tarea es comprobar si los pares de números dados (N, M) forman un Número de Compromiso o no. 
Ejemplos: 
 

Entrada: N = 48, M = 75 
Salida: Sí 
Explicación: 
Los divisores propios de 48 son 1, 2, 3, 4, 6, 8, 12, 16, 24  La
suma de los divisores propios de 48 es 75( sum1
El los divisores de 75 son 1, 3, 5, 15, 25  La
suma de los divisores propios de 48 es 49( sum2
Dado que sum2 = N + 1, los pares dados forman números prometidos.
Entrada: N = 95, M = 55 
Salida: No 
Explicación: 
Los divisores propios de 95 son 1, 5, 19 La 
suma de los divisores propios de 48 es 25( sum1
Los divisores propios de 55 son 1, 5, 11 La 
suma de los divisores propios divisores de 48 es 17( suma2
Dado que ni sum2 es igual a N + 1 ni sum1 es igual a M + 1, por lo tanto, los pares dados no forman números prometidos. 
 

Acercarse: 
 

  1. Encuentra la suma de los divisores propios de los números dados N y M .
  2. Si la suma de los divisores propios de N es igual a M + 1 o la suma de los divisores propios de M es igual a N + 1 , entonces los pares dados forman Números de Compromiso .
  3. De lo contrario, no forma un par de números prometidos.

A continuación se muestra la implementación del enfoque anterior: 
 

C++

// C++ program for the above approach
#include <bits/stdc++.h>
using namespace std;
 
// Function to check whether N is
// Perfect Square or not
bool isPerfectSquare(int N)
{
 
    // Find sqrt
    double sr = sqrt(N);
 
    return (sr - floor(sr)) == 0;
}
 
// Function to check whether the given
// pairs of numbers is Betrothed Numbers
// or not
void BetrothedNumbers(int n, int m)
{
    int Sum1 = 1;
    int Sum2 = 1;
 
    // For finding the sum of all the
    // divisors of first number n
    for (int i = 2; i <= sqrt(n); i++) {
        if (n % i == 0) {
            Sum1 += i
                    + (isPerfectSquare(n)
                           ? 0
                           : n / i);
        }
    }
 
    // For finding the sum of all the
    // divisors of second number m
    for (int i = 2; i <= sqrt(m); i++) {
        if (m % i == 0) {
            Sum2 += i
                    + (isPerfectSquare(m)
                           ? 0
                           : m / i);
        }
    }
 
    if ((n + 1 == Sum2)
        && (m + 1 == Sum1)) {
        cout << "YES" << endl;
    }
    else {
        cout << "NO" << endl;
    }
}
 
// Driver Code
int main()
{
    int N = 9504;
    int M = 20734;
 
    // Function Call
    BetrothedNumbers(N, M);
 
    return 0;
}

Java

// Java program for the above approach
class GFG{
  
// Function to check whether N is
// Perfect Square or not
static boolean isPerfectSquare(int N)
{
  
    // Find sqrt
    double sr = Math.sqrt(N);
  
    return (sr - Math.floor(sr)) == 0;
}
  
// Function to check whether the given
// pairs of numbers is Betrothed Numbers
// or not
static void BetrothedNumbers(int n, int m)
{
    int Sum1 = 1;
    int Sum2 = 1;
  
    // For finding the sum of all the
    // divisors of first number n
    for (int i = 2; i <= Math.sqrt(n); i++) {
        if (n % i == 0) {
            Sum1 += i
                    + (isPerfectSquare(n)
                           ? 0
                           : n / i);
        }
    }
  
    // For finding the sum of all the
    // divisors of second number m
    for (int i = 2; i <= Math.sqrt(m); i++) {
        if (m % i == 0) {
            Sum2 += i
                    + (isPerfectSquare(m)
                           ? 0
                           : m / i);
        }
    }
  
    if ((n + 1 == Sum2)
        && (m + 1 == Sum1)) {
        System.out.print("YES" +"\n");
    }
    else {
        System.out.print("NO" +"\n");
    }
}
  
// Driver Code
public static void main(String[] args)
{
    int N = 9504;
    int M = 20734;
  
    // Function Call
    BetrothedNumbers(N, M);
}
}
 
// This code is contributed by 29AjayKumar

Python3

# Python3 program for the above approach
from math import sqrt,floor
 
# Function to check whether N is
# Perfect Square or not
def isPerfectSquare(N):
    # Find sqrt
    sr = sqrt(N)
 
    return (sr - floor(sr)) == 0
 
# Function to check whether the given
# pairs of numbers is Betrothed Numbers
# or not
def BetrothedNumbers(n,m):
    Sum1 = 1
    Sum2 = 1
 
    # For finding the sum of all the
    # divisors of first number n
    for i in range(2,int(sqrt(n))+1,1):
        if (n % i == 0):
            if (isPerfectSquare(n)):
                Sum1 += i
            else:
                Sum1 += i + n/i
 
    # For finding the sum of all the
    # divisors of second number m
    for i in range(2,int(sqrt(m))+1,1):
        if (m % i == 0):
            if (isPerfectSquare(m)):
                Sum2 += i
            else:
                Sum2 += i + (m / i)
 
    if ((n + 1 == Sum2) and (m + 1 == Sum1)):
        print("YES")   
    else:
        print("NO")
 
# Driver Code
if __name__ == '__main__':
    N = 9504
    M = 20734
 
    # Function Call
    BetrothedNumbers(N, M)
 
# This code is contributed by Surendra_Gangwar

C#

// C# program for the above approach
using System;
 
class GFG{
 
// Function to check whether N is
// perfect square or not
static bool isPerfectSquare(int N)
{
 
    // Find sqrt
    double sr = Math.Sqrt(N);
 
    return (sr - Math.Floor(sr)) == 0;
}
 
// Function to check whether the given
// pairs of numbers is Betrothed numbers
// or not
static void BetrothedNumbers(int n, int m)
{
    int Sum1 = 1;
    int Sum2 = 1;
 
    // For finding the sum of all the
    // divisors of first number n
    for(int i = 2; i <= Math.Sqrt(n); i++)
    {
       if (n % i == 0)
       {
           Sum1 += i + (isPerfectSquare(n) ?
                                 0 : n / i);
       }
    }
 
    // For finding the sum of all the
    // divisors of second number m
    for(int i = 2; i <= Math.Sqrt(m); i++)
    {
       if (m % i == 0)
       {
           Sum2 += i + (isPerfectSquare(m) ?
                                 0 : m / i);
       }
    }
 
    if ((n + 1 == Sum2) && (m + 1 == Sum1))
    {
        Console.Write("YES" + "\n");
    }
    else
    {
        Console.Write("NO" + "\n");
    }
}
 
// Driver Code
public static void Main(String[] args)
{
    int N = 9504;
    int M = 20734;
 
    // Function Call
    BetrothedNumbers(N, M);
}
}
 
// This code is contributed by Rajput-Ji

Javascript

<script>
// Javascript program for the above approach
 
// Function to check whether N is
// Perfect Square or not
function isPerfectSquare(N)
{
 
    // Find sqrt
    let sr = Math.sqrt(N);
 
    return (sr - Math.floor(sr)) == 0;
}
 
// Function to check whether the given
// pairs of numbers is Betrothed Numbers
// or not
function BetrothedNumbers(n, m)
{
    let Sum1 = 1;
    let Sum2 = 1;
 
    // For finding the sum of all the
    // divisors of first number n
    for (let i = 2; i <= Math.sqrt(n); i++) {
        if (n % i == 0) {
            Sum1 += i
                    + (isPerfectSquare(n)
                           ? 0
                           : parseInt(n / i));
        }
    }
 
    // For finding the sum of all the
    // divisors of second number m
    for (let i = 2; i <= Math.sqrt(m); i++) {
        if (m % i == 0) {
            Sum2 += i
                    + (isPerfectSquare(m)
                           ? 0
                           : parseInt(m / i));
        }
    }
 
    if ((n + 1 == Sum2)
        && (m + 1 == Sum1)) {
        document.write("YES");
    }
    else {
        document.write("NO");
    }
}
 
// Driver Code
    let N = 9504;
    let M = 20734;
 
    // Function Call
    BetrothedNumbers(N, M);
 
// This code is contributed by rishavmahato348.
</script>
Producción: 

NO

 

Complejidad del Tiempo: O(√N + √M)
 

Publicación traducida automáticamente

Artículo escrito por hrishikeshkonderu y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *