Character
#
Description
Alternate form. For 'g' and 'G', trailing zeros are not removed. For 'f', 'F', 'e', 'E', 'g', 'G', the output always contains a decimal point. For 'o', 'x', and 'X', a 0, 0x, and 0X, respectively, is prepended to non-zero numbers.
Source: http://en.wikipedia.org/wiki/Printf_format_string#Format_placeholders
EDIT
To answer one of your other questions:
edit: i wanted to know why would this guy use # in printf() function for his multiplication table when he doesnt even need it.
Good question. gcc gives a warning:
warning: '#' flag used with ‘%d’ gnu_printf format [-Wformat=]
You might have to ask the person who wrote the script, since we are not able to know what they were thinking when they wrote it, and we can't give you a definitive answer just guess.