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
+formato |
+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]]
|