Imprima todos los números perfectos de una array cuya suma de dígitos también sea un número perfecto

Dada una array arr[] de tamaño N , la tarea es imprimir todos los números perfectos de una array cuya suma de dígitos también sea un número perfecto .

Ejemplos:

Entrada: arr[] = { 3, 8, 12, 28, 6 }
Salida: 6
Explicación:  El elemento de array arr[4] ( = 6) es un número perfecto. El elemento de array arr[3] (= 28) es un número perfecto pero su suma de dígitos (= 10) no es un número perfecto.

Entrada: arr[] = { 1, 2, 3 }
Salida: 1

Enfoque: siga los pasos a continuación para resolver el problema:

  1. Declare una función, isPerfect() para verificar si el número es un número perfecto o no.
  2. Declare otra función, sumOfDigits() para calcular la suma de todos los dígitos de un número.
  3. Atraviesa la array arr[] :
    • Si arr[i] es un número perfecto :
      • Inicialice una variable, digamos digitSum, para almacenar la suma de dígitos del elemento de array actual.
      • Si digitSum también es un número perfecto, imprima ese número.

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 if a number
// is perfect number or not
int isPerfect(int N)
{
    // Stores sum of proper divisors
    int sumOfDivisors = 1;
    for (int i = 2; i <= N / 2; ++i) {
       
        if (N % i == 0) {
            sumOfDivisors += i;
        }
    }
 
    // If sum of digits is equal to N,
    // then it's a perfect number
    if (sumOfDivisors == N) {
        return 1;
    }
 
    // Otherwise, not a perfect number
    else
        return 0;
}
 
// Function to find the
// sum of digits of a number
int sumOfDigits(int N)
{
    // Stores sum of digits
    int sum = 0;
 
    while (N != 0) {
        sum += (N % 10);
        N = N / 10;
    }
 
    // Return sum of digits
    return sum;
}
 
// Function to count perfect numbers from
// an array whose sum of digits is also perfect
void countPerfectNumbers(int arr[], int N)
{
    // Traverse the array
    for (int i = 0; i < N; ++i) {
       
        // If number is perfect
        if (isPerfect(arr[i])) {
           
            // Stores sum of digits
            // of the number
            int sum = sumOfDigits(arr[i]);
 
            // If that is also perfect number
            if (isPerfect(sum)) {
               
                // Print that number
                cout << arr[i] << " ";
            }
        }
    }
}
 
// Driver Code
int main()
{
    // Given array
    int arr[] = { 3, 8, 12, 28, 6 };
 
    // Size of the array
    int N = sizeof(arr) / sizeof(arr[0]);
 
    // Function call to count perfect numbers
    // having sum of digits also perfect
    countPerfectNumbers(arr, N);
 
    return 0;
}

Java

// Java Program to implement
// the above approach
 
import java.io.*;
import java.util.*;
 
class GFG {
 
  // Function to check if a number
  // is perfect number or not
  static boolean isPerfect(int N)
  {
    // Stores sum of proper divisors
    int sumOfDivisors = 1;
    for (int i = 2; i <= N / 2; ++i) {
 
      if (N % i == 0) {
        sumOfDivisors += i;
      }
    }
 
    // If sum of digits is equal to N,
    // then it's a perfect number
    if (sumOfDivisors == N) {
      return true;
    }
 
    // Otherwise, not a perfect number
    else
      return false;
  }
 
  // Function to find the
  // sum of digits of a number
  static int sumOfDigits(int N)
  {
    // Stores sum of digits
    int sum = 0;
 
    while (N != 0) {
      sum += (N % 10);
      N = N / 10;
    }
 
    // Return sum of digits
    return sum;
  }
 
  // Function to count perfect numbers from
  // an array whose sum of digits is also perfect
  static void countPerfectNumbers(int arr[], int N)
  {
    // Traverse the array
    for (int i = 0; i < N; ++i) {
 
      // If number is perfect
      if (isPerfect(arr[i])) {
 
        // Stores sum of digits
        // of the number
        int sum = sumOfDigits(arr[i]);
 
        // If that is also perfect number
        if (isPerfect(sum)) {
 
          // Print that number
          System.out.print(arr[i] + " ");
        }
      }
    }
  }
 
  // Driver Code
  public static void main(String[] args)
  {
     
    // Given array
    int arr[] = { 3, 8, 12, 28, 6 };
 
    // Size of the array
    int N = arr.length;
 
    // Function call to count perfect numbers
    // having sum of digits also perfect
    countPerfectNumbers(arr, N);
  }
}
 
// This code is contributed by Kingash.

Python3

# Python Program to implement
# the above approach
 
# Function to check if a number
# is perfect number or not
def isPerfect(N):
   
    # Stores sum of proper divisors
    sumOfDivisors = 1;
    for i in range(2, int(N / 2) + 1):
 
        if (N % i == 0):
            sumOfDivisors += i;
 
    # If sum of digits is equal to N,
    # then it's a perfect number
    if (sumOfDivisors == N):
        return True;
 
    # Otherwise, not a perfect number
    else:
        return False;
 
# Function to find the
# sum of digits of a number
def sumOfDigits(N):
   
    # Stores sum of digits
    sum = 0;
 
    while (N != 0):
        sum += (N % 10);
        N = N // 10;
 
    # Return sum of digits
    return sum;
 
# Function to count perfect numbers from
# an array whose sum of digits is also perfect
def countPerfectNumbers(arr, N):
   
    # Traverse the array
    for i in range(N):
 
        # If number is perfect
        if (isPerfect(arr[i])):
 
            # Stores sum of digits
            # of the number
            sum = sumOfDigits(arr[i]);
 
            # If that is also perfect number
            if (isPerfect(sum)):
               
                # Print that number
                print(arr[i], end=" ");
 
# Driver Code
if __name__ == '__main__':
   
    # Given array
    arr = [3, 8, 12, 28, 6];
 
    # Size of the array
    N = len(arr);
 
    # Function call to count perfect numbers
    # having sum of digits also perfect
    countPerfectNumbers(arr, N);
 
    # This code is contributed by 29AjayKumar

C#

// C# program for the above approach
using System;
class GFG
{
 
  // Function to check if a number
  // is perfect number or not
  static bool isPerfect(int N)
  {
     
    // Stores sum of proper divisors
    int sumOfDivisors = 1;
    for (int i = 2; i <= N / 2; ++i) {
 
      if (N % i == 0) {
        sumOfDivisors += i;
      }
    }
 
    // If sum of digits is equal to N,
    // then it's a perfect number
    if (sumOfDivisors == N) {
      return true;
    }
 
    // Otherwise, not a perfect number
    else
      return false;
  }
 
  // Function to find the
  // sum of digits of a number
  static int sumOfDigits(int N)
  {
     
    // Stores sum of digits
    int sum = 0;
 
    while (N != 0) {
      sum += (N % 10);
      N = N / 10;
    }
 
    // Return sum of digits
    return sum;
  }
 
  // Function to count perfect numbers from
  // an array whose sum of digits is also perfect
  static void countPerfectNumbers(int []arr, int N)
  {
     
    // Traverse the array
    for (int i = 0; i < N; ++i) {
 
      // If number is perfect
      if (isPerfect(arr[i])) {
 
        // Stores sum of digits
        // of the number
        int sum = sumOfDigits(arr[i]);
 
        // If that is also perfect number
        if (isPerfect(sum)) {
 
          // Print that number
          Console.Write(arr[i] + " ");
        }
      }
    }
  }
 
// Driver Code
static public void Main()
{
   
    // Given array
    int []arr = { 3, 8, 12, 28, 6 };
 
    // Size of the array
    int N = arr.Length;
 
    // Function call to count perfect numbers
    // having sum of digits also perfect
    countPerfectNumbers(arr, N);
}
}
 
// This code is contributed by jana_sayantan.

Javascript

<script>
// JavaScript program for the above approach
 
// Function to check if a number
// is perfect number or not
function isPerfect(N)
{
 
    // Stores sum of proper divisors
    let sumOfDivisors = 1;
    for (let i = 2; i <= Math.floor(N / 2); ++i)
    {
     
        if (N % i === 0)
        {
            sumOfDivisors += i;
        }
    }
 
    // If sum of digits is equal to N,
    // then it's a perfect number
    if (sumOfDivisors === N) {
        return 1;
    }
 
    // Otherwise, not a perfect number
    else
        return 0;
}
 
// Function to find the
// sum of digits of a number
function sumOfDigits(N)
{
    // Stores sum of digits
    let sum = 0;
 
    while (N != 0) {
        sum += (N % 10);
        N = Math.floor(N / 10);
    }
 
    // Return sum of digits
    return sum;
}
 
// Function to count perfect numbers from
// an array whose sum of digits is also perfect
function countPerfectNumbers(arr, N)
{
    // Traverse the array
    for (let i = 0; i < N; ++i) {
     
        // If number is perfect
        if (isPerfect(arr[i])) {
         
            // Stores sum of digits
            // of the number
            let sum = sumOfDigits(arr[i]);
 
            // If that is also perfect number
            if (isPerfect(sum)) {
             
                // Print that number
                document.write(arr[i] + " ");
            }
        }
    }
}
 
// Driver Code
 
    // Given array
    let arr = [ 3, 8, 12, 28, 6 ];
 
    // Size of the array
    let N = arr.length;
 
    // Function call to count perfect numbers
    // having sum of digits also perfect
    countPerfectNumbers(arr, N);
 
// This code is contributed by Surbhi Tyagi.
</script>
Producción: 

6

 

Complejidad de Tiempo: O(N 3 * log N)
Espacio Auxiliar: O(1)

Publicación traducida automáticamente

Artículo escrito por patelajeet 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 *