13-11-2007, 10:38 PM
ArrayEpá, eu posso estar a errar mas não tenho maneira de comprovar o que estou a dizer por isso, aqui vai disto.
Estes dois bocados de codigo que tens são um pouco estranhos, a meu ver. parece que estás a complicar o não tanto complicado.
for (i=2 ; i<=n ; i++) { (isto é um ciclo for, como deves saber. que, pelo que dizes aqui começa em 2 e vai até quando i for <= a n... a minha pergunta é, queres mesmo que comece em 2? não será melhor for (i=0, i<n, i++)?)
if ((n%i)==0) (isto compara na 1ª volta do ciclo o teu n com 2... até aqui tudo bem.. se der resto 0 a dividir por 2 já não é primo, logo não precisas de na 2ª volta dividir por 3... não tem mta logica, acho.
Mas pronto, eu tb tou um pouco ferrugento nisto e não tenho muito tempo.
Experimenta:
p=0;
While (p<n){
p=p+1;
if ((p%2)==0)
print( "%d \n",p);
}[/quote]
Há várias formas de fazer isto, mas parece-me que a ideia do Alexandre é obter o resto da divisão inteira de n por todos os números naturais iguais ou menores que esse para assim verificar se o número é primo, algo que só acontece quando p=2 (quando o número é divisível apenas por si próprio e por 1), já que a variável p é incrementada sempre que a divisão dá resto zero. Pareceu-me que faz sentido o valor mínimo de i ser 1, já que a divisão por zero é irrelevante e, dentro desta lógica, é necessário dividir o número por ele próprio para obter o valor correcto de p, assim o ciclo não poderia cessar antes de n.
o_Õ
Estes dois bocados de codigo que tens são um pouco estranhos, a meu ver. parece que estás a complicar o não tanto complicado.
for (i=2 ; i<=n ; i++) { (isto é um ciclo for, como deves saber. que, pelo que dizes aqui começa em 2 e vai até quando i for <= a n... a minha pergunta é, queres mesmo que comece em 2? não será melhor for (i=0, i<n, i++)?)
if ((n%i)==0) (isto compara na 1ª volta do ciclo o teu n com 2... até aqui tudo bem.. se der resto 0 a dividir por 2 já não é primo, logo não precisas de na 2ª volta dividir por 3... não tem mta logica, acho.
Mas pronto, eu tb tou um pouco ferrugento nisto e não tenho muito tempo.
Experimenta:
p=0;
While (p<n){
p=p+1;
if ((p%2)==0)
print( "%d \n",p);
}[/quote]
Há várias formas de fazer isto, mas parece-me que a ideia do Alexandre é obter o resto da divisão inteira de n por todos os números naturais iguais ou menores que esse para assim verificar se o número é primo, algo que só acontece quando p=2 (quando o número é divisível apenas por si próprio e por 1), já que a variável p é incrementada sempre que a divisão dá resto zero. Pareceu-me que faz sentido o valor mínimo de i ser 1, já que a divisão por zero é irrelevante e, dentro desta lógica, é necessário dividir o número por ele próprio para obter o valor correcto de p, assim o ciclo não poderia cessar antes de n.
o_Õ
![[Image: celeritas_sig.png]](http://i182.photobucket.com/albums/x153/el_pombo/celeritas_sig.png)
