66that is used in breaking the RSA cryptography protocol, by finding the
77prime numbers that are used to create the public key value, n
88
9- In this implementation, I have used a very simple construct without
9+ In this implementation, I have used a very simple construct without
1010the use of qiskit or cirq to help understand how Shor algorithm's
1111idea actually works.
1212
1313Website referred for shor algorithm:
1414https://www.geeksforgeeks.org/shors-factorization-algorithm/
1515"""
16+
17+
1618class Shor :
1719 def period_find (self , num : int , number : int ) -> int :
1820 """
@@ -24,7 +26,7 @@ def period_find(self, num: int, number: int) -> int:
2426 >>> shor.period_find(3, 7)
2527 6
2628 """
27- start :int = 1
29+ start : int = 1
2830 while pow (num , start , number ) != 1 :
2931 start += 1
3032 return start
@@ -40,28 +42,24 @@ def shor_algorithm(self, number:int) -> tuple[int, int]:
4042 >>> factors
4143 (3, 5)
4244 """
43- if number % 2 == 0 :
44- return 2 , number // 2
45+ if number % 2 == 0 :
46+ return 2 , number // 2
4547 while True :
4648 random .seed (0 )
47- num :int = random .randint (2 , number - 1 )
48- gcd_number_num :int = math .gcd (number , num )
49+ num : int = random .randint (2 , number - 1 )
50+ gcd_number_num : int = math .gcd (number , num )
4951 if gcd_number_num > 1 :
50- return gcd_number_num , number // gcd_number_num
51-
52- result :int = self .period_find (num , number )
53- if not result % 2 :
54- start :int = pow (num , result // 2 , number )
55- if start != number - 1 :
56- p_value :int = math .gcd (start - 1 , number )
57- q_value :int = math .gcd (start + 1 , number )
52+ return gcd_number_num , number // gcd_number_num
53+
54+ result : int = self .period_find (num , number )
55+ if not result % 2 :
56+ start : int = pow (num , result // 2 , number )
57+ if start != number - 1 :
58+ p_value : int = math .gcd (start - 1 , number )
59+ q_value : int = math .gcd (start + 1 , number )
5860 if p_value > 1 and q_value > 1 :
5961 return p_value , q_value
60-
62+
6163
6264shor = Shor ()
6365print (shor .shor_algorithm (15 ))
64-
65-
66-
67-
0 commit comments