Experimental realization of Shor's quantum factoring algorithm using nuclear magnetic resonance