Quantum Computing: Applications and Challenges