Dado un entero n, necesitamos encontrar un rango de enteros positivos tal que todos los números en ese rango sean compuestos y la longitud de ese rango sea n. Puede imprimir cualquier rango en el caso de más de una respuesta. Un número compuesto es un entero positivo que tiene al menos un divisor distinto de 1 y él mismo (Fuente: wiki )
Ejemplos:
Input : 3 Output : [122, 124] Explanation 122, 123, 124 are all composite numbers
La solución es un poco complicada. Dado que hay muchas respuestas posibles, discutimos una solución generalizada aquí.
Let the length of range be n and range starts from a then, a, a+1, a+2, ...., a+n-1 all should be composite. So the problem boils down to finding such 'a'. If we closely observe p! (where p is a positive integers) then we will find that, p! has factors of 2, 3, 4, ..., p-1, Hence if we add i to p! such that 1 < i < p, then p! + i has a factor i, so p! + i must be composite. So we end up finding p! + 2, p! + 3, .... p! + p-1 are all composite and continuous integers forming a range [p! + 2, p! + p-1] The above range consists of p-2 elements. For a range of n elements we need to consider (n+2)! If we take a = (n+2)! + 2, Then, a + 1 = (n+2)! + 3 Then, a + 2 = (n+2)! + 4 ... Then, a + n-1 = (n+2)! + n+1 Hence, a = (n+2)! + 2 = 2*3*....*(n+2) + 2 a has 2 as its divisor because (n+2)! and 2 both divides 2 a + 1 = 2*3*....*(n+2) + 3 a + 1 has 3 as its divisor because (n+2)! and 3 both divides 3 ... a + n-1 = 2*3*....*(n+2) + n+1 a + n-1 has n+1 as its divisor because (n+2)! and n+1 both divides n+1 Therefore range will be [ (n+2)! + 2, ( (n+2)! + 2 ) + n-1]
Ejemplo del algoritmo anterior
n = 3 Then a = (n+2)! + 2 a = 5! + 2 a + 1 = 5! + 3 a + 2 = 5! + 4 Here a is divisible by 2 Here a + 1 is divisible by 3 Here a + 2 is divisible by 4 Hence a, a+1, a+2 are all composites
C++
// C++ program to find a range of // composite numbers of given length #include <bits/stdc++.h> using namespace std; // method to find factorial // of given number int factorial (int n) { if (n == 0) return 1; return n * factorial(n-1); } // to print range of length n // having all composite integers int printRange(int n) { int a = factorial(n + 2) + 2; int b = a + n - 1; cout << "[" << a << ", " << b << "]"; return 0; } // Driver method int main() { int n = 3 ; printRange(n); return 0; } // This code is contributed by Anshika Goyal
Java
// Java program to find a range of composite // numbers of given length class Test { // method to find factorial of given number static int factorial(int n) { if (n == 0) return 1; return n*factorial(n-1); } // to print range of length n // having all composite integers static void printRange(int n) { int a = factorial(n + 2) + 2; int b = a + n - 1; System.out.println("[" + a + ", " + b + "]"); } // Driver method public static void main(String args[]) throws Exception { int n = 3 ; printRange(n); } }
Python3
# Python program to find a range of composite # numbers of given length # function to calculate factorial def factorial(n): a = 1 for i in range(2, n + 1): a *= i return a # to print range of length n # having all composite integers def printRange(n): a = factorial(n + 2) + 2 b = a + n - 1 print("["+str(a)+", "+str(b)+"]") # driver code to test above functions n = 3 printRange(n)
C#
// C# program to find a range of // composite numbers of given // length using System; class GFG { // method to find factorial // of given number static int factorial(int n) { if (n == 0) return 1; return n*factorial(n-1); } // to print range of length n // having all composite integers static void printRange(int n) { int a = factorial(n + 2) + 2; int b = a + n - 1; Console.WriteLine("[" + a + ", " + b + "]"); } // Driver method public static void Main() { int n = 3 ; printRange(n); } } // This code is contributed by anuj_67.
PHP
<?php // PHP program to find a range of // composite numbers of given length // method to find factorial // of given number function factorial ( $n) { if ($n == 0) return 1; return $n * factorial($n - 1); } // to print range of length n // having all composite integers function printRange($n) { $a = factorial($n + 2) + 2; $b = $a + $n - 1; echo "[" , $a , ", " , $b , "]"; return 0; } // Driver Code $n = 3 ; printRange($n); // This code is contributed by anuj_67. ?>
Javascript
<script> // Javascript program to find a range of // composite numbers of given length // Method to find factorial // of given number function factorial(n) { if (n == 0) return 1; return n * factorial(n - 1); } // To print range of length n // having all composite integers function printRange(n) { let a = factorial(n + 2) + 2; let b = a + n - 1; document.write(`[${a}, ${b}]`); return 0; } // Driver Code let n = 3; printRange(n); // This code is contributed by _saurabh_jaiswal. </script>
Producción :
[122, 124]
Análisis del algoritmo anterior
Complejidad de tiempo: O(n)
Espacio auxiliar: O(1)
Este artículo es una contribución de Pratik Chhajer . Si te gusta GeeksforGeeks y te gustaría contribuir, también puedes escribir un artículo usando write.geeksforgeeks.org o enviar tu artículo por correo a review-team@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.
Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA