比较分解时间得到素数

Posted

技术标签:

【中文标题】比较分解时间得到素数【英文标题】:compare between the factorization time get prime 【发布时间】:2021-03-30 11:16:01 【问题描述】:

我尝试比较以下之间的分解时间: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 (IBM) 上的 Shor 算法,但输出是 Unexpected thatquantum is slow how this occur )

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].")

qiskit 比经典函数慢

【问题讨论】:

正常!您需要将大 N 的结果与大素因数进行比较! 此 IBM 实施仅限于少数人: 注意:这个 Shor 算法的实现使用 4n+2 个量子比特,其中 n 是表示二进制整数的比特数。所以在实践中,目前,这种实现仅限于分解小整数。给定上面的 N 值,我们计算下面的 4n+2 并从实际电路中确认大小。 【参考方案1】:

您正在尝试考虑高度并行系统的模拟。这为您提供了作为模拟的所有缺点,并且没有使量子计算变得有趣的并行性的优点。

表现不佳应该不足为奇。

【讨论】:

你能解释一下吗?我不明白 @ammaribrahim 查看代码中qasm_simulator 的行吗?这表明您正在尝试模拟量子力学。模拟往往很慢。量子分解在真正的量子计算机上应该很快的原因是你正在利用量子叠加的并行性。但是您在没有这种并行性的计算机上模拟它,这使得它更慢。 谢谢我知道了,但是如果有什么方法可以在任何地方的量子计算机上运行它? @ammaribrahim 您可以尝试ibm.com/quantum-computing/developers 并创建一个帐户。我不知道它要花多少钱,但你是在一台价值数千万美元的机器上租用时间。所以我预计它会花费一些东西。

以上是关于比较分解时间得到素数的主要内容,如果未能解决你的问题,请参考以下文章

以下用于素数分解的 Python 程序不起作用

Java中带指数的素数分解

HDU_3071 Gcd & Lcm game 素数分解 + 线段树 + 状压

蛮力,单线程素数分解

具有素数列表的高效素数分解算法

大数的素数分解