We developed a fast numerical algorithm for solving the three dimensional vectorial Helmholtz equation that arises in electromagnetic scattering problems. The algorithm is based on electric field integral equations and is essentially a boundary element method. Nystroms quadrature rule with a triangular grid is employed to linearize the integral equations, which are then solved by using a right-preconditioned iterative method. We apply the fast multipole technique to accelerate the matrix-vector multiplications in the iterations. We demonstrate the broad applications and accuracy of this method with practical examples including dielectric, plasmonic and metallic objects. We then apply the method to investigate the plasmonic properties of a silver torus and a silver split-ring resonator under the incidence of an electromagnetic plane wave. We show the silver torus can be used as a trapping tool to bind small dielectric or metallic particles.