Firstly check these posts to see how the public address is constructed :-
Which cryptographic algorithm is used to generate the secret and public keys?
How can I decode Ed25519 addresses to the regular 56 letters format?
Now use a Base32 calculator (eg this one :- Perl CPAN module "Karel Miko > CryptX-0.057 > Crypt::Misc" function encode_b32r, or this :- http://tomeko.net/online_tools/hex_to_base32.php?lang=en) to calculate the Base32 encodings in the following :-
Stellar Lumens Public Key
=========================
30 (1 byte prefix)
0000000000000000000000000000000000000000000000000000000000000000 (32 bytes, min value)
0000 (2 bytes CRC16-XModem, min value)
3000000000000000000000000000000000000000000000000000000000000000000000 (concatenate, 35 bytes)
GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA (Base32 encoding, 56 characters, min value)
30 (1 byte prefix)
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF (32 bytes, max value)
FFFF (2 bytes CRC16-XModem, max value)
30FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF (concatenate)
GD777777777777777777777777777777777777777777777777777777 (Base32 encoding, 56 characters, max value)
From the minimum and maximum possible values of the Base32 encoding, as a base 32 integer, ie
GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
GD777777777777777777777777777777777777777777777777777777
we see the range of all possible public keys (or 'public addresses') that can occur. Each public key in that range is 56 'digits' long (ie in the number base 32), and as we run through that range the first digit is always 'G', and the second digit ranges from A through to D. We can do similar calculations with Bitcoin's Base58 to see why private keys always start with K, L, or 5, and why BIP38 encrypted private keys always start with 6PY or 6PR.