Changes

Jump to navigation Jump to search
no edit summary
Agora, devemos verificar isso por mais alguns valores ainda maiores do que um milhão. No entanto, uma vez que você já tentou duas ou três, você certamente vai querer experimentar mais, por isso é provavelmente uma boa idéia quebrar este pequeno loop while dentro de uma função (que vamos chamar BigFib).
 
BigFib := proc(n)
 
calcula o menor número Fibonacci com excedente n
 
local k;
with(combinat);
k := 1;
while fibonacci(k) <= n do
k := k + 1;
od;
print(fibonacci(k));
end:
 
Para fazer a nossa função corretamente, chamamos '''with(combinat)''' no corpo da função para garantir que temos a versão correta da função de Fibonacci. (Isso também poderia ser alcançado usando a sintaxe de chamada longa '''combinat[fibonacci]''' para a função.) Agora é bastante simples para calcular o número de Fibonacci menor superior a um determinado número.
 
BigFib(1000000000);
BigFib(1000000000000);
BigFib(10^10);
 
 
 
'''2. Encontrar tantas números de Fibonacci primos que puder.'''
 
'''Solução'''
 
Usando Maple, este tipo de problema torna-se muito simples; Nós pode simplesmente usar o procedimento de Fibonacci do Maple, do pacote '''combinat''' para gerar números de Fibonacci, e podemos usar a função '''ISPrime''' para testar a primalidade de cada um. Apesar de ser muito simples, vamos finalizar em um procedimento, para que possamos chamá-lo com argumentos diferentes que determinam quantos números de Fibonacci serão testado.
 
PrimeFib := proc(n)
local i, # loop index
t, # temporary variable
prime_fib; # list of prime Fibonacci numbers; returned
prime_fib := NULL;
for i from 1 to n do
t := combinat[fibonacci](i);
if isprime(t) then prime_fib := prime_fib, t; fi;
od;
RETURN(prime_fib);
end:
 
Aqui, para economizar espaço, testamos apenas os primeiros 1000 números Fibonacci.
 
PrimeFib(100);
 
Note-se que, uma vez que usamos '''ISPrime''', nossa lista não é certa de ser composta somente de números primos, como ISPrime usa um teste de primaridade probabilística.
 
Outra abordagem que você pode considerar tentar é construir duas listas: uma contendo a lista de números de Fibonacci até certo ponto, e outro contendo a sequência de números primos, gerados utilizando a função ithprime (que não é probabilística). Em seguida, cruzar as duas listas para extrair todos os membros que têm em comum. Esta abordagem tem a vantagem de que evita a utilização do teste de primaridade probabilística utilizado por ISPrime.
31

edits

Navigation menu