Algorithm 比较因式分解时间得到素数
我尝试比较以下两种算法之间的因式分解时间:1)经典算法函数: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
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]}.")