Algoritmos e Programação I Lista de Exercícios 05 – Prof. Marcelo ...
Algoritmos e Programação I Lista de Exercícios 05 – Prof. Marcelo ...
Algoritmos e Programação I Lista de Exercícios 05 – Prof. Marcelo ...
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
PUCRS <strong>–</strong> Faculda<strong>de</strong> <strong>de</strong> Informática <strong>–</strong> <strong>Algoritmos</strong> e <strong>Programação</strong> I<br />
<strong>Lista</strong> <strong>de</strong> <strong>Exercícios</strong> <strong>05</strong> <strong>–</strong> <strong>Prof</strong>. <strong>Marcelo</strong> Yamaguti, Márcia e Sílvia Moraes 2006/01<br />
<strong>Exercícios</strong> extraídos da lista <strong>de</strong> lapro do <strong>Prof</strong>. João Batista.<br />
1. Implemente para classe Matemática métodos para os problemas <strong>de</strong>finidos<br />
abaixo:<br />
a. Elabora um método que <strong>de</strong>termina se um número é perfeito ou não,<br />
retornando true ou false no caso contrário. Um número é perfeito<br />
quando a soma dos seus divisores, com exceção do próprio número é<br />
igual ao número. Por exemplo: 6 = 1 + 2 + 3.<br />
b. Elabore um método que <strong>de</strong>termina o seguinte somatório.<br />
Somatório = 1 + 1 + 1 + ... + 1____<br />
2! 3! numero!<br />
Utilize o método do fatorial já <strong>de</strong>senvolvido para a classe Matemática.<br />
c. Elabore um método que <strong>de</strong>termina o maior divisor comum <strong>de</strong> dois<br />
números n1 e n2, usando o algoritmo básico <strong>de</strong> Eucli<strong>de</strong>s, que na versão<br />
abaixo <strong>de</strong>ixa o valor do maior divisor comum em n1. Teste o algoritmo<br />
à mão primeiro, para ter certeza do que está fazendo!<br />
enquanto n2 for diferente <strong>de</strong> zero<br />
tmp = n1<br />
n1 = n2<br />
n2 = tmp % n2<br />
d. Um método para cálculo <strong>de</strong> raízes quadradas <strong>de</strong> um número N já era<br />
conhecido pelos babilônios em ... bom, há muito tempo atrás. (Este<br />
método também é conhecido como método <strong>de</strong> Heron, um matemático<br />
grego que o <strong>de</strong>screveu 20 séculos <strong>de</strong>pois dos babilônios, perto do ano<br />
50 d.c.). Começando <strong>de</strong> um valor inicial k (geralmente valendo 1) os<br />
babilônios geravam um novo valor <strong>de</strong> k <strong>de</strong> acordo com a regra:<br />
N<br />
k +<br />
k =<br />
k<br />
2<br />
Implemente um método que calcula a raiz quadrada <strong>de</strong> um valor N<br />
(atributo da classe) pelo método <strong>de</strong> Heron. O método <strong>de</strong>ve receber como<br />
parâmetro a quantida<strong>de</strong> <strong>de</strong> iterações <strong>de</strong>sejadas para o cálculo da raiz.<br />
e. Um dos métodos que <strong>de</strong>termina raízes cúbicas <strong>de</strong> N é o método <strong>de</strong><br />
Joãozinho, bastante semelhante ao <strong>de</strong> Heron. Iniciando com k=1, o<br />
método segue a regra:
PUCRS <strong>–</strong> Faculda<strong>de</strong> <strong>de</strong> Informática <strong>–</strong> <strong>Algoritmos</strong> e <strong>Programação</strong> I<br />
<strong>Lista</strong> <strong>de</strong> <strong>Exercícios</strong> <strong>05</strong> <strong>–</strong> <strong>Prof</strong>. <strong>Marcelo</strong> Yamaguti, Márcia e Sílvia Moraes 2006/01<br />
N<br />
2k<br />
+<br />
2<br />
k =<br />
k<br />
3<br />
Implemente um método que calcula a raiz cúbica <strong>de</strong> um valor N<br />
(atributo da classe) pelo método <strong>de</strong> Joãozinho. O método <strong>de</strong>ve receber<br />
como parâmetro a quantida<strong>de</strong> <strong>de</strong> iterações <strong>de</strong>sejadas para o cálculo da<br />
raiz.<br />
f. Escreva um método que calcula o valor aproximado <strong>de</strong> cos(x) dado pela<br />
aproximação abaixo:<br />
2 4 6<br />
x x x<br />
cos( x ) ≈ 1−<br />
+ − + ....<br />
2! 4! 6!<br />
O método <strong>de</strong>ve receber como parâmetro a quantida<strong>de</strong> <strong>de</strong> iterações.<br />
2. Analise os problemas abaixo e construa uma solução no método main.<br />
a. A conjectura <strong>de</strong> goldbach foi apresentada por Christian Goldbach em<br />
uma carta a Leonhard Euler no ano <strong>de</strong> 1742, e diz: “Todo número para<br />
maior do que 2 po<strong>de</strong> ser representado pela soma <strong>de</strong> dois números<br />
primos”. Apesar <strong>de</strong> até hoje não ter sido provada, a conjectura<br />
funcionou para os casos que foram experimentados. Faça um trecho <strong>de</strong><br />
código na main que lê um valor par maior que 2 e escreve na tela os<br />
pares <strong>de</strong> primos em que esse valor po<strong>de</strong> ser <strong>de</strong>composto. Por exemplo,<br />
o valor 10 po<strong>de</strong> ser <strong>de</strong>composto em : 5-5 e 3-7.<br />
b. Ninguém sabe quem propôs a conjectura dos primos gêmeos, mas ela<br />
sugere que existe um número infinito <strong>de</strong> pares <strong>de</strong> números primos na<br />
forma k, k+2. Por exemplo, 17 e 19 são primos gêmeos, assim como 227<br />
e 229 e muitos (infinitos ?) outros pares. Faça um trecho <strong>de</strong> código na<br />
main que encontra os 100 primeiros primos gêmeos.