If you want the MAX amount of prestige points (1,000 per Pokémon defeated), your entire team needs to consist of Pokémon with HALF of the CP of the lowest Pokémon in the Gym. You get an additional 1,000 points if you defeat the entire gym.
If you just want good prestige points, everyone has said it: use Pokémon with CP lower than the Pokémon in the gym.
Basically, the lower the CP the more points you'll get but the max point you'll get per one Pokémon defeated is 1,000 do it wouldn't really make sense to try to use a 500 CP attacker against a 2,000 CP defender. A 1,000 CP attack would (generally) do more damage and have more stamina, while also taking the Pokémon down quicker and get you the same amount of prestige points.
My favorite prestigers:
• Against Dragonite: Coyster with both ice type moves//Dewgong with both ice type moves (preferably frost breath/blizzard)
• Against Gyarados: Jolteon with both electric moves, which I think is the only option any way lol (preferably thunder shock/Thunder)
• Against Vaporeon: Venusaur with both grass type moves (preferably vine whip or razor leaf/solarbeam or petal blizzard)
• Against Rhydon: Same as Against Vaporeon, but also, Tangela with vine whip/solarbeam or Vaporeon with watergun/hydro pump.
***This list is typically with dodging. Some, you don't necessarily have to. I typically like using a quick move where I can get 3-4 attacks in before dodging (sometimes I only dodge the defenders charge moves) because other moves take so much time that I can only get 1 attack in before dodging when the 3-4 quick attacks can do more damage but still give me felixibility to when I want to dodge. I also go for a big, single bar charge move because charge moves are typically slow so I would rather take 1-2 hits during my one, large charge move instead of taking 1-2 per frequency of other double or more bar charge moves.
I left Snorlax and Blissey down here because I have a different strategy than I have with the others
• Against Snorlax: anything with high DPS (damage per second) and STAB (same type advantage bonus). So like Dragonite with dragon breath/dragon pulse or Gengar with shadow claw/shadow ball or Alakazam with confusion/future sight. I found that using a high DPS Pokémon with half CP is simpler than using a fighting type with half CP (but then again, I don't have a machamp with low CP so this could be a factor in my decision). So this is to get the max prestige points against a Snorlax
• Against Blissey: my experience with prestiging against Blissey, you will never get max prestige with Blissey. So again, the lower the better, but I typically just stick to barely lower. I always use machamp with both fighting type moves (preferably with the charge move close combat - but I don't have one I have karate chop/cross chop...) i generally have a couple machamp just in case one faints because I would rather have a faint than for time to run out. But it's doable with just one with the right dodging. But I generally just attack and dodge charge moves only. The only exception to that is if the Blissey has a phychic move as its quick move, (which is another reason I have a second machamp) then I dodge every other quick move or so but since machamp is weak to phychic type moves, it's hard to keep it from fainting and timing out at the same time.
Another prestiger I don't use very often against Blissey but has done well is Rhydon with STAB movesets. Since it's resistant to normal type moves and takes regular damage from phychic type moves, it's a good contender. Still not a max point prestiger for Blissey but with the rock event going on, I figured I'd include him lol