Encuentra un rango de números compuestos de longitud dada

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *