El supernúmero de Poulet es un número de Poulet (pseudoprimo) en base 2 si todos y cada uno de los divisores D dividen a .
Algunos de los números de superpollo son:
341, 1387, 2047, 2701, 3277, 4033….
Comprobar si N es un número de Super-poulet
Dado un número entero N , la tarea es comprobar que N es un número de Super-Poulet.
Ejemplos:
Entrada: N = 341
Salida: Sí
Entrada: N = 10
Salida: No
Planteamiento: La idea es generar todos los divisores del número N y para todos los divisores verifique que D divide . Si esta condición se cumple para todos los divisores, entonces el número es el número de superpoulet.
Por ejemplo:
Para N = 341,
los divisores de 341 son {1, 11, 31, 341} y, de
manera similar, también dan un valor entero.
Por lo tanto, 341 es un número superpoulet.
A continuación se muestra la implementación del enfoque anterior:
Python3
# Python3 implementation to # check if N is a super Poulet number import math # Function to find the divisors def findDivisors(n): divisors = [] # Loop to iterate over the # square root of the N for i in range(1,\ int(math.sqrt(n) + 1)): if (n % i == 0) : # Check if divisors are equal if (n / i == i): divisors.append(i) else: divisors.append(i) divisors.append(int(n / i)) return sorted(divisors) # Function to check if N # is a super Poulet number def isSuperdNum(n): d = findDivisors(n) # Loop to check that every # divisor divides 2^D - 2 for i in d: x = (2**i-2)/i if int(x) != x: return False return True # Driver Code if __name__ == "__main__": n = 341 if isSuperdNum(n) == True: print("Yes") else : print("No")
C#
// C# implementation to // check if N is a super Poulet number using System; using System.Collections.Generic; class GFG { // Function to find the divisors static List<int> findDivisors(int n) { List<int> divisors = new List<int>(); // Loop to iterate over the // square root of the N for (int i = 1; i < (Math.Sqrt(n) + 1); i++) { if (n % i == 0) { // Check if divisors are equal if (n / i == i) divisors.Add(i); else { divisors.Add(i); divisors.Add((n / i)); } } } divisors.Sort(); return divisors; } // Function to check if N // is a super Poulet number static bool isSuperdNum(int n) { List<int> d = findDivisors(n); // Loop to check that every // divisor divides 2^D - 2 foreach(int i in d) { double x = (Math.Pow(2, i) - 2) / i; if (Math.Truncate(x) != x) return false; } return true; } // Driver Code public static void Main(string[] args) { int n = 341; if (isSuperdNum(n) == true) Console.Write("Yes"); else Console.Write("No"); } } // This code is contributed by chitranayal.
Javascript
<script> // Javascript implementation to // check if N is a super Poulet number // Function to find the divisors function findDivisors(n){ let divisors = [] // Loop to iterate over the // square root of the N for(let i = 1; i < Math.floor(Math.sqrt(n) + 1); i++){ if (n % i == 0) { // Check if divisors are equal if (n / i == i){ divisors.push(i) } else{ divisors.push(i) divisors.push(Math.floor(n / i)) } } } return divisors.sort((a, b)=> a - b) } // Function to check if N // is a super Poulet number function isSuperdNum(n){ let d = findDivisors(n) // Loop to check that every // divisor divides 2^D - 2 for(let i in d){ let x = (2**i - 2) / i if (Math.floor(x) != x){ return false } } return true } // Driver Code let n = 341 if(isSuperdNum(n) == true){ document.write("Yes") } else { document.write("No") } // This code is contributed by _saurabh_jaiswal </script>
Yes
Publicación traducida automáticamente
Artículo escrito por SHUBHAMSINGH10 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA