22.10.2014 Views

Aprendendo a Programar Programando em Linguagem C - FSM

Aprendendo a Programar Programando em Linguagem C - FSM

Aprendendo a Programar Programando em Linguagem C - FSM

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.

while (n > 1)<br />

{<br />

m = 0;<br />

while (n % d == 0)<br />

{<br />

m++;<br />

n = n / d;<br />

}<br />

if (m > 0)<br />

printf("\t%d\t%d\n", d, m);<br />

d++;<br />

}<br />

}<br />

void DecompFatoresRec(int n)<br />

{<br />

static int d = 2;<br />

int m = 0;<br />

if (n > 1)<br />

{<br />

while (n % d == 0)<br />

{<br />

m++;<br />

n = n / d;<br />

}<br />

if (m > 0)<br />

printf("\t%d\t%d\n", d, m);<br />

d++;<br />

DecompFatoresRec(n);<br />

}<br />

}<br />

Observe que como d foi definida como estática, o seu valor da ultima execução da função, obtido<br />

através do comando d++, é preservado permitindo que um novo divisor primo seja procurado.<br />

O valor de uma variável estática é preservado para uma próxima execução da função pelo fato<br />

de que, na verdade, ela não é destruída quando se encerra a execução da função, como se ela fosse<br />

uma variável global. A diferença entre variável local estática e variável global é que a primeira<br />

continua só podendo ser acessada pela função onde ela foi definida.<br />

5.10 Uma aplicação à História da Mat<strong>em</strong>ática<br />

Em 1817, Christian Goldbach, um professor de Mat<strong>em</strong>ática e de História nascido na Al<strong>em</strong>anha, numa<br />

carta que escreveu ao mat<strong>em</strong>ático Leonard Euler fez a seguinte afirmação: todo número par maior quer dois<br />

é a soma de dois números primos. Embora a veracidade desta afirmação, conhecida hoje como Conjectura<br />

de Goldbach, já tenha sido verificada para todos os números pares menores do que 12x10 17<br />

(http://www.ieeta.pt/~tos/goldbach.html, acessada <strong>em</strong> 14/12/2008), ainda não se conseguiu prová-la<br />

integralmente, apesar dos esforços já despendidos por muitos mat<strong>em</strong>áticos.<br />

O programa abaixo, permite a verificação da Conjectura de GoldBach para qualquer número par<br />

menor que 32.767.<br />

#include <br />

#include <br />

int Primo(int n)<br />

{<br />

int d = 2;<br />

float r = sqrt(n);

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

Saved successfully!

Ooh no, something went wrong!