vector :: erase () não está funcionando como esperado

  for(it1=prime.begin();it1<prime.end();it1++){
        for(it2=it1+1;it2<prime.end();it2++){

            if(*it2%*it1==0){

                prime.erase(it2);
            }

        }
        if(*it1<1000)
        prime.erase(it1);
    }

No snippet de código acima, estou removendo números que são múltiplos de número já existentes no vetor primo 2 a 9999 (peneira de Eratóstenes). Também apenas números que são maiores que 1000, mas de alguma forma eles não estão sendo apagados.

alguém pode me explicar por que?

Desde já, obrigado.

questionAnswers(2)

yourAnswerToTheQuestion