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:
- Declare una función, isPerfect() para verificar si el número es un número perfecto o no.
- Declare otra función, sumOfDigits() para calcular la suma de todos los dígitos de un número.
- 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.
- Si arr[i] es un número perfecto :
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>
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