Diferencia entre revisiones de «Implementación de algoritmos de teoría de números/Algoritmo de factorización en números primos»

Contenido eliminado Contenido añadido
Raulshc (discusión | contribs.)
+formato
Raulshc (discusión | contribs.)
+código en C++
Línea 109:
<math>\{ \text{lista factores } n \} \leftarrow n</math>
'''devolver''' <math>\{ \text{lista factores } n \}</math>
 
== Implementación en distintos lenguajes de programación ==
=== C++ ===
<syntaxhighlight lang="cpp">
#include <iostream>
#include <cmath>
 
using namespace std;
 
template <class tipo>
tipo potencia(tipo base, tipo exponente)
{
return pow(base,exponente);
}
 
template <class tipo1, class tipo2>
tipo2 modulo(tipo1 a, tipo2 b)
{
return (a % b + b) % b;
}
 
void factorizacion(unsigned long long n)
{
const long long b = -1;
 
 
if (n == 1 || n == 2 || n == 3)
{
cout << n << endl;
return;
}
 
unsigned long long i = 2;
long long m = 0;
 
while (i <= static_cast<unsigned long long>(sqrt(n)))
{
if (n % i == 0)
{
cout << i << "--";
n /= i;
}
else if (i < 5)
{
++i;
}
else
{
i = i + modulo(2 * potencia(b,m), 6);
m = (m + 1) % 2;
}
}
cout << n << endl;
}
 
int main()
{
cout << "Factorizando el numero 100895598169:\n";
factorizacion(100895598169);
}
</syntaxhighlight>
 
[[Categoría:Libro:Implementación de algoritmos de teoría de números]]