Connecting Large Language Models with Evolutionary Algorithms Yields Powerful Prompt Optimizers