Número Idoneal es un número N si y solo si no se puede escribir como ab + bc + ca para a > b > c > 0.
Pocos números Ideonales son:
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 13, 15, 16, 18, 21, 22…………
Comprobar si un número es un número Idoneal
Dado un número N , la tarea es comprobar si N es un número idoneal o no. Si N es un número Idoneal, escriba «Sí» , de lo contrario, escriba «No» .
Ejemplos:
Entrada: N = 10
Salida: Sí
Entrada: N = 11
Salida: No
Enfoque La idea es ejecutar tres bucles anidados de ‘1’ a ‘N’ y verificar si ab + bc + ca es igual a ‘N’ o no. Devuelve falso si ab + bc + ca es igual a ‘N’; de lo contrario, devuelve verdadero al final de los bucles.
A continuación se muestra la implementación del enfoque anterior:
C++
// C++ implementation for the // above approach #include <bits/stdc++.h> using namespace std; // Function to check if number // is an Idoneal numbers bool isIdoneal(int n) { // iterate for all // triples pairs (a, b, c) for (int a = 1; a <= n; a++) { for (int b = a + 1; b <= n; b++) { for (int c = b + 1; c <= n; c++) { // if the condition // is satisfied if (a * b + b * c + c * a == n) return false; } } } return true; } // Driver Code int main() { int N = 10; // Function Call if (isIdoneal(N)) cout << "Yes"; else cout << "No"; return 0; }
Java
// Java implementation for the // above approach import java.lang.*; class GFG{ // Function to check if number // is an Idoneal numbers static boolean isIdoneal(int n) { // Iterate for all // triples pairs (a, b, c) for(int a = 1; a <= n; a++) { for(int b = a + 1; b <= n; b++) { for(int c = b + 1; c <= n; c++) { // If the condition // is satisfied if (a * b + b * c + c * a == n) return false; } } } return true; } // Driver Code public static void main(String[] args) { int N = 10; // Function Call if (isIdoneal(N)) System.out.print("Yes"); else System.out.print("No"); } } // This code is contributed by rock_cool
Python3
# Python3 implementation for the # above approach # Function to check if number # is an Idoneal numbers def isIdoneal(n): # Iterate for all # triples pairs (a, b, c) for a in range(1, n + 1): for b in range(a + 1, n + 1): for c in range(b + 1, n + 1): # If the condition # is satisfied if (a * b + b * c + c * a == n): return False return True # Driver Code N = 10 # Function call if (isIdoneal(N)): print("Yes") else: print("No") # This code is contributed by Vishal Maurya.
C#
// C# implementation for the // above approach using System; class GFG{ // Function to check if number // is an Idoneal numbers static bool isIdoneal(int n) { // Iterate for all // triples pairs (a, b, c) for(int a = 1; a <= n; a++) { for(int b = a + 1; b <= n; b++) { for(int c = b + 1; c <= n; c++) { // If the condition // is satisfied if (a * b + b * c + c * a == n) return false; } } } return true; } // Driver Code public static void Main() { int N = 10; // Function Call if (isIdoneal(N)) Console.Write("Yes"); else Console.Write("No"); } } // This code is contributed by Code_Mech
Javascript
<script> // Javascript implementation for the // above approach // Function to check if number // is an Idoneal numbers function isIdoneal(n) { // iterate for all // triples pairs (a, b, c) for (var a = 1; a <= n; a++) { for (var b = a + 1; b <= n; b++) { for (var c = b + 1; c <= n; c++) { // if the condition // is satisfied if (a * b + b * c + c * a == n) return false; } } } return true; } // Driver Code var N = 10; // Function Call if (isIdoneal(N)) document.write("Yes"); else document.write("No"); // This code is contributed by rutvik_56. </script>
Yes
Complejidad de tiempo: O(n*n*n)
Referencia : https://en.wikipedia.org/wiki/Idoneal_number