Aprendendo a Programar Programando em Linguagem C - FSM
Aprendendo a Programar Programando em Linguagem C - FSM
Aprendendo a Programar Programando em Linguagem C - FSM
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);