Skip to main contentIBM Quantum Documentation
This page is from an old version of Qiskit SDK and does not exist in the latest version. We recommend you migrate to the latest version. See the release notes for more information.

Shor

class Shor(quantum_instance=None)

GitHub

Bases: object

Shor’s factoring algorithm.

Shor’s Factoring algorithm is one of the most well-known quantum algorithms and finds the prime factors for input integer NN in polynomial time.

Adapted from https://github.com/ttlion/ShorAlgQiskit

See also https://arxiv.org/abs/quant-ph/0205095

Parameters

quantum_instance (Union[QuantumInstance, Backend, BaseBackend, None]) – Quantum Instance or Backend


Methods

construct_circuit

Shor.construct_circuit(N, a=2, measurement=False)

Construct quantum part of the algorithm.

Parameters

  • N (int) – The odd integer to be factored, has a min. value of 3.
  • a (int) – Any integer that satisfies 1 < a < N and gcd(a, N) = 1.
  • measurement (bool) – Boolean flag to indicate if measurement should be included in the circuit.

Return type

QuantumCircuit

Returns

Quantum circuit.

factor

Shor.factor(N, a=2)

Execute the algorithm.

The input integer NN to be factored is expected to be odd and greater than 2. Even though this implementation is general, its capability will be limited by the capacity of the simulator/hardware. Another input integer aa can also be supplied, which needs to be a co-prime smaller than NN .

Parameters

  • N (int) – The odd integer to be factored, has a min. value of 3.
  • a (int) – Any integer that satisfies 1 < a < N and gcd(a, N) = 1.

Returns

results of the algorithm.

Return type

ShorResult

Raises

  • ValueError – Invalid input
  • AlgorithmError – If a quantum instance or backend has not been provided

modinv

static Shor.modinv(a, m)

Returns the modular multiplicative inverse of a with respect to the modulus m.

Return type

int


Attributes

quantum_instance

Returns quantum instance.

Return type

Optional[QuantumInstance]

Was this page helpful?
Report a bug or request content on GitHub.