Dados dos enteros , su máximo común divisor es
tal que
divide a ambos
y
, es decir es un divisor común de
y
, y cualquier otro divisor común divide a
también. Se puede ver que
es el menor entero positivo que se puede escribir como una combinación lineal de
y
con coeficientes enteros. El Algoritmo de Euclides calcula, para dos enteros
y
dados,
y lo expresa de la forma
, con
.
Los enteros y
son primos relativos si
, es decir, si no poseen un divisor común que no sea trivial. Sea
el conjunto de enteros positivos primos relativos con
, menores que
. Se tiene que el número de elementos en
es el valor de la función de Euler
en
. Con la multiplicación módulo
,
es un grupo de orden
. Así pues, si
entonces
. Por tanto, para cada entero
existe un mínimo elemento
, divisor de
, tal que
. Tal
se dice ser el orden de
en el grupo multiplicativo de residuos módulo
.
Sea un entero para el cual se ha de buscar un factor entero no trivial. Elijamos un entero
tal que
. Si
, entonces
es un factor no-trivial de
. En otro caso,
, y se tiene que
quedará en el grupo multiplicativo de residuos de
, i.e.
. Si acaso
tuviera ahí un orden par
, entonces
es tal que
. En consecuencia,
, es decir
divide al producto de dos números menores que él. Por tanto, los factores primos de
han de aparecer como factores de esos números. Así pues al calcular
y
obtendremos factores no-triviales de
.
Un primer problema en este procedimiento de decisión consiste entonces en encontrar un elemento de orden par en el grupo multiplicativo de residuos módulo . Si se elige
al azar, la probabilidad de que
sea de orden par es
donde
es el número de factores primos en
. Así pues, la probabilidad de que al cabo de
intentos no se haya localizado un tal
es
y obviamente esto tiende a cero muy rápidamente al incrementar
. Así pues, bien vale la pena repetir pruebas arbitrarias de selección de un elemento (impar) menor que
para localizar uno de orden par en el grupo multiplicativo de residuos módulo
.
Sin embargo, desde el punto de vista computacional, el mayor problema que presenta el algoritmo descrito radica en el cálculo del orden del elemento actual en
: el número de potencias de
a calcular es del orden de
que a su vez es de orden
.
Sea
el número de bits necesarios para escribir a
, es decir, sea
el tamaño de
. Resulta claro que
lo cual indica que el procedimiento anterior es de complejidad exponencial respecto al tamaño de la entrada. El algoritmo de Shor se fundamenta en un procedimiento polinomial en
para realizar la tarea de calcular el orden de un elemento.