Grover: factorize number

from typing import Tuple
from qlasskit import qlassf, Qint
from qlasskit.algorithms import Grover


@qlassf
def factorize(a: Tuple[Qint[2], Qint[2]]) -> bool:
    return a[0] * a[1] == 9


q_algo = Grover(factorize)
from qiskit import QuantumCircuit, transpile
from qiskit.visualization import plot_histogram
from qiskit_aer import AerSimulator

qc = q_algo.export("qiskit")
qc.measure_all()
simulator = AerSimulator()
circ = transpile(qc, simulator)
result = simulator.run(circ).result()
counts = result.get_counts(circ)

counts_readable = q_algo.decode_counts(counts, discard_lower=5)
plot_histogram(counts_readable)
_images/53523c55ee33ddca7f2242a4dd63fe5ffd4d2c6f47e74a3ef1ec7f90cfad1544.png
qc.draw("mpl")
_images/9d12fb55178cb9e1eb133731cddd2108c604e4ba44fdc16aa91db1a0425e0f2b.png