13-11-2007, 09:36 PM
Só vi meio por alto a tua função, mas pelo que pude observar, a expressão que usas para determinar o "grau de parentesco" do número é esta:
Arrayif (menu==2){
p=0;
for (i=2 ; i<=n ; i++) {
if ((n%i)==0)
p=p+1;
}
if (p==2)
printf("Numero primo\n");
else
printf("Não primo\n");
} /*fim do menu=2*/[/quote]
Se percebi correctamente a pergunta que fizeste, a solução seria aplicar a mesma expressão a todos os números naturais menores ou iguais do que o número que foi introduzido, será que algo deste género resultaria?
for(int x=1;x<=n;x++) <- inicializamos a variável x (neste caso foi declarada já dentro do "for", mas depois fazes como preferires ou como foi ensinado nas aulas) que usamos para avaliar se o número verifica as condições.
{
p=0; <- por cada ciclo fixamos este valor em zero, para verificar quantas vezes o número é divisível por outro menor.
for(int i=1;i<=x;i++) { <- na tua função, o valor mínimo de i=2, mas não deveria ser 1? Porque p=2 só se verifica quando o número é divisível por ele próprio e por 1 (ou seja, quando é primo).
if((x%i)==0) <- esta expressão, suponho, devolve o resto da divisão inteira e compara o resultado com 0.
p++;
}
if(p==2)
printf("%d\n",x);
}
Há formas mais práticas e rápidas de conseguir o mesmo resultado, mas tudo depende do que foi ensinado nas aulas.
Nunca estudei C, por isso espero não te ter induzido em erro.
Arrayif (menu==2){
p=0;
for (i=2 ; i<=n ; i++) {
if ((n%i)==0)
p=p+1;
}
if (p==2)
printf("Numero primo\n");
else
printf("Não primo\n");
} /*fim do menu=2*/[/quote]
Se percebi correctamente a pergunta que fizeste, a solução seria aplicar a mesma expressão a todos os números naturais menores ou iguais do que o número que foi introduzido, será que algo deste género resultaria?
for(int x=1;x<=n;x++) <- inicializamos a variável x (neste caso foi declarada já dentro do "for", mas depois fazes como preferires ou como foi ensinado nas aulas) que usamos para avaliar se o número verifica as condições.
{
p=0; <- por cada ciclo fixamos este valor em zero, para verificar quantas vezes o número é divisível por outro menor.
for(int i=1;i<=x;i++) { <- na tua função, o valor mínimo de i=2, mas não deveria ser 1? Porque p=2 só se verifica quando o número é divisível por ele próprio e por 1 (ou seja, quando é primo).
if((x%i)==0) <- esta expressão, suponho, devolve o resto da divisão inteira e compara o resultado com 0.
p++;
}
if(p==2)
printf("%d\n",x);
}
Há formas mais práticas e rápidas de conseguir o mesmo resultado, mas tudo depende do que foi ensinado nas aulas.
Nunca estudei C, por isso espero não te ter induzido em erro.
![[Image: celeritas_sig.png]](http://i182.photobucket.com/albums/x153/el_pombo/celeritas_sig.png)
