/****************************************************
* numeros.bc *
****************************************************
Autor: Marc Mel�ndez Schofield
Funciones de teor�a de n�meros.
Se permite la reproducci�n y modificaci�n total o
parcial de este c�digo. */
scale = 0;
/* Valor absoluto */
define abs(n) {
return sqrt(n^2);
}
/* M�ximo com�n divisor */
define mcd(n, m) {
if(abs(n) < abs(m))
return mcd(m, n);
if(n % m == 0)
return abs(m);
return mcd(m, n % m);
}
/* M�nimo com�n m�ltiplo */
define mcm(n, m) {
return abs(n)*abs(m)/mcd(n, m);
}
/* N�meros de Mersenne */
define mersenne(n) {
return 2^n - 1;
}
/* N�meros de Fermat */
define fermat(n) {
return 2^(2^n) + 1;
}
/* N�meros de Fibonacci */
define fibonacci(n) {
if(n == 0)
return 0;
if(n == 1)
return 1;
return fibonacci(n - 1) + fibonacci(n - 2);
}
/* Factores primos */
define factores(n) {
auto m, i;
if(n < 2)
{
print "\n";
}
if(n >= 2)
{
m = n;
i = 2;
while(i <= sqrt(n))
{
if((m % i) == 0)
{
if(m < n) print ", ";
print i;
m = m / i;
i = i - 1;
}
i = i + 1;
}
}
if(m > 1)
{
if (m < n) print ", ";
print m;
}
print ".\n";
return n;
}
/* Definici�n recursiva de la funci�n factorial */
define factorial(x) {
if (x <= 1) return (1);
return (factorial(x-1) * x);
}
/* N�meros combinatorios */
define comb(n, m) {
return factorial(n)/(factorial(m)*factorial(n - m));
}