Fast Algorithms for solving electromagnetic scattering problems