zero

Collatz's Conjecture.

11:28pm. I wrote a C program for fun that shows you the Collatz's conjecture. Enjoy.

#include <stdio.h>
#include <string.h>
#include <stdbool.h>
#include <inttypes.h>

// Returns true if even and false if odd.
bool isEven(uint32_t number);

// Next number according to Collatz conjecture.
uint32_t collatz(uint32_t number);

int main(int argc, char* argv[])
{
	if (argc < 2) return 1;

	uint32_t steps = 0;
	uint32_t seed = (uint32_t) atoi(argv[1]);
	uint32_t c = 0;
	
	while (seed != 1)
	{
		c = collatz(seed);
		printf("current collatz: %lu\n", c);
		seed = c;
		steps++;
	}
	
	printf("Total operations performed: %lu\n", steps);
	
	return 0;
}

bool isEven(uint32_t number)
{
	return (number % 2 == 0);
}

uint32_t collatz(uint32_t number)
{
	if (number == 1) return 1;
	else if (isEven(number)) return number/2;

	return number*3+1;
}

#blog