A ton of trainers have give you their numbers. If you want specific locations, look in a guide. You'll just have to battle everyone to see who gives out their numbers.
In HeartGold and SoulSilver you can register all the phone numbers!
In the Trainer's House after getting their phone numbers.
All of them have phone numbers, but there are certain ways to get them. I would try looking up "how to get all gym leader's phone numbers in heartgold" on google
No, you don't. You cannot face the Sinnoh Gym Leaders in HeartGold.
There isn't any...you get a rematch by getting people's phone numbers then sometimes they call for a rematch.
hawzhin
You cannot get Lance's number in Pokémon HeartGold since he is the Pokémon League Champion you can only get numbers from trainers that are not in caves or mountains and you can also get numbers of any of the 8 Gym Leaders in the Johto region or any of the 8 Gym Leaders in the Kanto region.
Dunsparce and Mareep
Phone numbers that start with the numbers 800 are toll free numbers. Toll free phone numbers are numbers that have no cost to the person calling the 800 number.
different places
Right next to the Saffron city gym. You can use it to battle gym leaders you have already defeated if you have their phone number and phone them when they are not busy. You may not be able to get all of the phone numbers, before you battle Red, and they might all have 6 Pokemon apiece in the fighting dojo battles.
Phone companies assign phone numbers arbitrarily; there is no formula.