Primeira vez aqui? Seja bem vindo e cheque o FAQ!
x

Escreva um código seguindo os princípios de programação funcional para encontrar todos os primos em um determinado intervalo.

0 votos
16 visitas
perguntada Out 15 em Ciência da Computação por Andrei Leite (1 ponto)  
Compartilhe

1 Resposta

0 votos
respondida Out 15 por Andrei Leite (1 ponto)  

A estratégia de resolução foi a seguinte.
Resolvi o problema em duas etapas: primeiro resolvi o problema de como definir uma função que identifica se um número é primo.
Depois disso, defini a função que de fato resolve o problema. Encapsulada nela, inclui a função citada acima, que retorna True se o número for primo.
Após isso, criei uma lista com todos os números no intervalo de interesse (inteiros entre t e n) e usei List comprehensions para criar uma lista com todos os números da lista 'numbers' que satisfazem às seguintes condições: é primo (testado pela função is_prime) e é diferente de 1.
Segue a resolução em Python:

import numpy as np
def prime_list(t,n): 
    def is_prime(n):            #Nested function: criando uma função dentro da função. Essa função irá retornar True se o número for primo
        prime=True
        count=2
        sqrt_floor=int(np.sqrt(n))
        while(prime and count<=sqrt_floor):
            if n%count==0:
                prime=False
            count+=1
        if (prime):
            return True
        else:
            return False
    numbers=list(range(t,n+1))            #Cria uma lista com todos os números que pertencem ao ntervalo de interesse.
    return([x for x in numbers if is_prime(x) and x!=1])  #List comprehension: se x em numbers, que é o intervalo de interesse, for primo e diferente de 1, adiciona x a uma lista
...