· 5 years ago · Jul 25, 2020, 12:00 AM
1
2
3print('\n Quantum Full Adder')
4print('---------------------')
5
6from qiskit import QuantumRegister
7from qiskit import ClassicalRegister
8from qiskit import QuantumCircuit, execute,IBMQ
9from qiskit.tools.monitor import job_monitor
10
11IBMQ.enable_account('INSERT API TOKEN HERE')
12provider = IBMQ.get_provider(hub='ibm-q')
13
14######## A ###########################
15q = QuantumRegister(5,'q')
16c = ClassicalRegister(2,'c')
17
18circuit = QuantumCircuit(q,c)
19circuit.x(q[0])
20circuit.cx(q[0],q[3])
21circuit.cx(q[1],q[3])
22circuit.cx(q[2],q[3])
23circuit.ccx(q[0],q[1],q[4])
24circuit.ccx(q[0],q[2],q[4])
25circuit.ccx(q[1],q[2],q[4])
26
27circuit.measure(q[3],c[0])
28circuit.measure(q[4],c[1])
29###################################
30backend = provider.get_backend('ibmq_qasm_simulator')
31job = execute(circuit, backend, shots=1)
32
33print('\nExecuting...\n')
34print('\nA\n')
35
36job_monitor(job)
37counts = job.result().get_counts()
38print('RESULT: ',counts,'\n')
39######## B ##########################
40q = QuantumRegister(5,'q')
41c = ClassicalRegister(2,'c')
42
43circuit = QuantumCircuit(q,c)
44circuit.x(q[1])
45circuit.cx(q[0],q[3])
46circuit.cx(q[1],q[3])
47circuit.cx(q[2],q[3])
48circuit.ccx(q[0],q[1],q[4])
49circuit.ccx(q[0],q[2],q[4])
50circuit.ccx(q[1],q[2],q[4])
51
52circuit.measure(q[3],c[0])
53circuit.measure(q[4],c[1])
54###################################
55job = execute(circuit, backend, shots=1)
56print('\nB\n')
57
58job_monitor(job)
59counts = job.result().get_counts()
60print('RESULT: ',counts,'\n')
61######## A + B ###########################
62q = QuantumRegister(5,'q')
63c = ClassicalRegister(2,'c')
64
65circuit = QuantumCircuit(q,c)
66circuit.x(q[0])
67circuit.x(q[1])
68circuit.cx(q[0],q[3])
69circuit.cx(q[1],q[3])
70circuit.cx(q[2],q[3])
71circuit.ccx(q[0],q[1],q[4])
72circuit.ccx(q[0],q[2],q[4])
73circuit.ccx(q[1],q[2],q[4])
74
75circuit.measure(q[3],c[0])
76circuit.measure(q[4],c[1])
77####################################
78job = execute(circuit, backend, shots=1)
79print('\nA + B\n')
80job_monitor(job)
81counts = job.result().get_counts()
82print('RESULT: ',counts,'\n')
83######## Cin ###########################
84q = QuantumRegister(5,'q')
85c = ClassicalRegister(2,'c')
86
87circuit = QuantumCircuit(q,c)
88circuit.x(q[2])
89circuit.cx(q[0],q[3])
90circuit.cx(q[1],q[3])
91circuit.cx(q[2],q[3])
92circuit.ccx(q[0],q[1],q[4])
93circuit.ccx(q[0],q[2],q[4])
94circuit.ccx(q[1],q[2],q[4])
95
96circuit.measure(q[3],c[0])
97circuit.measure(q[4],c[1])
98###################################
99job = execute(circuit, backend, shots=1)
100print('\nCin\n')
101job_monitor(job)
102counts = job.result().get_counts()
103print('RESULT: ',counts,'\n')
104######## Cin + A ###########################
105q = QuantumRegister(5,'q')
106c = ClassicalRegister(2,'c')
107
108circuit = QuantumCircuit(q,c)
109circuit.x(q[2])
110circuit.x(q[0])
111circuit.cx(q[0],q[3])
112circuit.cx(q[1],q[3])
113circuit.cx(q[2],q[3])
114circuit.ccx(q[0],q[1],q[4])
115circuit.ccx(q[0],q[2],q[4])
116circuit.ccx(q[1],q[2],q[4])
117
118circuit.measure(q[3],c[0])
119circuit.measure(q[4],c[1])
120###############################
121job = execute(circuit, backend, shots=1)
122print('\nCin + A\n')
123job_monitor(job)
124counts = job.result().get_counts()
125print('RESULT: ',counts,'\n')
126######## Cin + B ###########################
127q = QuantumRegister(5,'q')
128c = ClassicalRegister(2,'c')
129
130circuit = QuantumCircuit(q,c)
131circuit.x(q[2])
132circuit.x(q[1])
133circuit.cx(q[0],q[3])
134circuit.cx(q[1],q[3])
135circuit.cx(q[2],q[3])
136circuit.ccx(q[0],q[1],q[4])
137circuit.ccx(q[0],q[2],q[4])
138circuit.ccx(q[1],q[2],q[4])
139
140circuit.measure(q[3],c[0])
141circuit.measure(q[4],c[1])
142#####################################
143job = execute(circuit, backend, shots=1)
144print('\nCin + B\n')
145job_monitor(job)
146counts = job.result().get_counts()
147print('RESULT: ',counts,'\n')
148######## Cin + A + B ###########################
149q = QuantumRegister(5,'q')
150c = ClassicalRegister(2,'c')
151circuit = QuantumCircuit(q,c)
152
153circuit.x(q[2])
154circuit.x(q[1])
155circuit.x(q[0])
156circuit.cx(q[0],q[3])
157circuit.cx(q[1],q[3])
158circuit.cx(q[2],q[3])
159circuit.ccx(q[0],q[1],q[4])
160circuit.ccx(q[0],q[2],q[4])
161circuit.ccx(q[1],q[2],q[4])
162
163circuit.measure(q[3],c[0])
164circuit.measure(q[4],c[1])
165#####################################
166job = execute(circuit, backend, shots=1)
167print('\nCin + A + B\n')
168
169job_monitor(job)
170counts = job.result().get_counts()
171
172print('RESULT: ',counts,'\n')
173print('Press any key to close')
174input()
175
176Output :