Algorithm 比较因式分解时间得到素数

Algorithm 比较因式分解时间得到素数,algorithm,factorization,qiskit,Algorithm,Factorization,Qiskit,我尝试比较以下两种算法之间的因式分解时间:1)经典算法函数: def is_prime1(n): if n<2: return False for i in range(2,n): if n % i ==0: return False return True def output_prime_factors(num): num=round(num) p=0 while p &l

我尝试比较以下两种算法之间的因式分解时间:1)经典算法函数:

def is_prime1(n):

    if n<2:
        return False
    for i in range(2,n):
        if n % i ==0:
            return False
    return True



def output_prime_factors(num):

    num=round(num)
    p=0
    while p < num:
        p +=1
        if num % p==0 and is_prime1(p)==True:
            print (p)

qiskit比经典函数慢

您试图在高度并行系统的模拟中发挥作用。这给了你模拟的所有缺点,而没有让量子计算有趣的并行性的优点


性能不佳并不令人惊讶。

这很正常!您需要将大的
N
的结果与大的素数因子进行比较!此IBM实现仅限于少量:注意:Shor算法的此实现使用4n+2量子位,其中n是表示二进制整数的位数。所以在实践中,目前,这个实现仅限于分解小整数。给定上面的N值,我们在下面计算4n+2,并根据实际电路确定大小。你能解释一下吗?我不知道understand@ammaribrahim查看代码中的行,该行显示
qasm\u模拟器
?这表明你正在尝试模拟量子力学。模拟往往很慢。在真正的量子计算机上,量子因子分解应该很快的原因是你正在利用量子叠加的并行性。但是你在没有并行性的计算机上模拟它,这使得它更慢。谢谢,我知道了,但是如果有任何方法可以在任何地方的量子计算机上运行它?@ammaribrahim,你可以尝试创建一个帐户。我不知道要花多少钱,但你在一台机器上租的时间要花上千万美元。所以我希望它能花点钱。
N = 15

shor = Shor(N)

backend = BasicAer.get_backend('qasm_simulator')

quantum_instance = QuantumInstance(backend, shots=1024)

result = shor.run(quantum_instance)

print(f"The list of factors of {N} as computed by the Shor's algorithm is 
{result['factors'][0]}.")