3n+1 problema – C

4 09 2008

A idéia desse algoritmo é a seguinte:

ler um valor inteiro positivo, e calcular a seguinte seqüência: Se o número for par achar a metade dele; se é ímpar, multiplique por 3 e acrescentar 1. Repita este processo até que o valor seja 1,
imprima cada valor. Finalmente, imprima quantos passos foram necessários pra se sejar ao numero 1,
deve ser feita a verificação pra ver se o numero é maior que 1,
eis minha solução pra esse algoritmo :)
#include<stdio.h>
/*
Autor: MRSantos mrsantos4@ucs.com */

int main()
{
int i, v, passos = 0;

puts("Entre com um valor inteiro: ");
scanf("%d", &v);

if(v < 1)
{
puts("O valor deve ser maior que 1 :) ");
return -1;
}

while(v != 1)
{
passos += 1;
if( v % 2 == 0)
{
v /= 2;
printf("valor de X: %d\n", v);
}
else
{
v = v * 3 + 1;
printf("valor de X: %d\n", v);
}
}
printf("Passos necessarios: %d\n", passos);
return 0;
}

saida do programa:

mrsantos@Cerrito C>>$ ./passos
Entre com um valor inteiro:
9
valor de V: 28
valor de V: 14
valor de V: 7
valor de V: 22
valor de V: 11
valor de V: 34
valor de V: 17
valor de V: 52
valor de V: 26
valor de V: 13
valor de V: 40
valor de V: 20
valor de V: 10
valor de V: 5
valor de V: 16
valor de V: 8
valor de V: 4
valor de V: 2
valor de V: 1
Passos necessários: 19


Ações

Informações

Deixe um comentário