Se dice que un número N es un número propio si no se puede escribir como M + la suma de los dígitos de M para cualquier M.
Los primeros números propios son:
1, 3, 5, 7, 9, 20, 31, 42……………….
Comprobar si N es un número propio
Dado un número entero N , la tarea es encontrar si este número es Self number o no.
Ejemplos:
Entrada: N = 3
Salida: Sí
Explicación:
1 + suma de dígitos (1) = 2
2 + suma de dígitos (2) = 4
3 + suma de dígitos (3) = 6
Por lo tanto, 3 no se puede escribir como
m + suma de dígitos de m para cualquier metro.
Entrada: N = 4
Salida: No
2 + sumodDigits(2) = 4
Enfoque : la idea es iterar de 1 a N y para cada número verificar que la suma de su valor y la suma de su dígito sea igual a N o no. Si es así, entonces el número no es un número propio. De lo contrario, el número es un número propio.
Por ejemplo:
if N = 3
// Comprueba cada número
// de 1 a N
1 + suma de Dígitos (1) = 1
2 + suma de Dígitos (2) = 4
3 + suma de Dígitos (3) = 6
Por lo tanto, 3 no se puede escribir como
M + suma de dígitos de M para cualquier M.
A continuación se muestra la implementación del enfoque anterior:
Ejemplo :
C++
// C++ implementation to check if the // number is a self number or not #include <bits/stdc++.h> using namespace std; // Function to find the sum of // digits of a number N int getSum(int n) { int sum = 0; while (n != 0) { sum = sum + n % 10; n = n / 10; } return sum; } // Function to check for Self number bool isSelfNum(int n) { for (int m = 1; m <= n; m++) { if (m + getSum(m) == n) return false; } return true; } // Driver code int main() { int n = 20; if (isSelfNum(n)) { cout << "Yes"; } else { cout << "No"; } return 0; }
Java
// Java implementation to check if the // number is a self number or not class GFG{ // Function to find the sum // of digits of a number N static int getSum(int n) { int sum = 0; while (n != 0) { sum = sum + n % 10; n = n / 10; } return sum; } // Function to check for Self number static boolean isSelfNum(int n) { for(int m = 1; m <= n; m++) { if (m + getSum(m) == n) return false; } return true; } // Driver code public static void main(String[] args) { int n = 20; if (isSelfNum(n)) { System.out.println("Yes"); } else { System.out.println("No"); } } } // This code is contributed by Ritik Bansal
Python3
# Python3 implementation to check if the # number is a self number or not # Function to find the sum of # digits of a number N def getSum(n): sum1 = 0; while (n != 0): sum1 = sum1 + n % 10; n = n // 10; return sum1; # Function to check for Self number def isSelfNum(n): for m in range(1, n + 1): if (m + getSum(m) == n): return False; return True; # Driver code n = 20; if (isSelfNum(n)): print("Yes"); else: print("No"); # This code is contributed by Code_Mech
C#
// C# implementation to check if the // number is a self number or not using System; class GFG{ // Function to find the sum // of digits of a number N static int getSum(int n) { int sum = 0; while (n != 0) { sum = sum + n % 10; n = n / 10; } return sum; } // Function to check for Self number static bool isSelfNum(int n) { for(int m = 1; m <= n; m++) { if (m + getSum(m) == n) return false; } return true; } // Driver code public static void Main() { int n = 20; if (isSelfNum(n)) { Console.Write("Yes"); } else { Console.Write("No"); } } } // This code is contributed by Code_Mech
Javascript
<script> // Javascript implementation to check if the // number is a self number or not // Function to find the sum // of digits of a number N function getSum( n) { let sum = 0; while (n != 0) { sum = sum + n % 10; n = parseInt(n / 10); } return sum; } // Function to check for Self number function isSelfNum( n) { for ( let m = 1; m <= n; m++) { if (m + getSum(m) == n) return false; } return true; } // Driver code let n = 20; if (isSelfNum(n)) { document.write("Yes"); } else { document.write("No"); } // This code is contributed by aashish1995 </script>
Yes
Complejidad de tiempo: O (log 10 N)
Espacio Auxiliar: O(1)
Referencias: https://en.wikipedia.org/wiki/Self_number