Fala moçada, tudo certo?
To precisando da ajuda de alguém aqui. Ontem tive prova e tomei um belo de um zero. Um dos exercicios era escrever um programa em C que fatora-se um numero com numeros primos e escreve na tela uma saída assim:
n = 600
fator 2 multiplicidade 3
fator 3 multiplicidade 1
fator 5 multiplicidade 2
Bom, eu não consegui escrever ontem mas hoje eu "quase" consegui, só ta dando uma falha. Segue o código:
[code=rich]
#include
int main(void) {
int i;
int n;
int primo;
int aux;
int tmp;
primo = 1;
i = 1;
printf("Digite n: ");
scanf("%d", &n);
aux = 0 ;
while ( n > 0 ) {
tmp = 2;
i = 0;
primo++;
/* nesse while ele pega o proximo n primo, aqui passa normal */
while ( tmp < primo )
{
if ( primo % tmp == 0 )
{
primo++;
tmp = 2;
}
tmp++;
}
while ( n % primo == 0 )
{
i++;
n = n / primo;
}
printf("Fator %d multiplicidade %d \n", primo, i);
}
return 0;
}
[/code]Do jeito que ele está, entra num loop infinito, da o resultado só que ele continua dividindo toda vida. Se eu mudo o While para n > 1, resolve o problema.
Mas aí que tá, nao era pra funcionar com n > 0?
já que ( usando o exemplo, depois da ultima divisão ):
n = 1
1 / 7 = 0
logo n = 0, e nisso esse saí-se do laço?
Agradeço desde já!
obs, prova com 2 questões, essa era a segunda. A primeira era para ver se um numero era palindromo. Inventei, tentei, rebolei, chorei e não consegui fazer o primeiro, tentava comparar o primeiro com o ultimo, segundo com penultimo e no final não consegui. Na saída da faculdade, conversando com o pessoal, um falou "mas você não tentou inverter o numero?" Cheguei em casa e consegui fazer, coisa mais simples mas não pensei nisso na hora. To fulo com esse zero
Jeanks
Tô em todas
Registrado
2K Mensagens
45 Curtidas
Fatoração em C [ resolvido]
#1 Por Jeanks
12/04/2011 - 17:03