23.12.2013 Views

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 ...

SHOW MORE
SHOW LESS

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.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!