We know 名 means name or famous, but what is the subtle difference between 有名，著名 and 闻名?
Indeed there is difference...
Literally, 有 means "has/have", 名 means "name", so 有名 means "has one's name (heard by others)", hence "famous". 著 means "prominent", so 著名 means "(has) a prominent name (heard by many)". 著名 describes a more famous person, and most likely a positive reputation.
闻名 cannot be used to directly describe a person. You can say 他是一位有名的学者(he is a famous scholar), or 他是一位著名的学者, both are acceptable usage. However you don't say 他是一位闻名的学者. 闻名 is usually used in phrases, e.g. 他是一位闻名遐迩的学者, or is used when you want to express "has a reputation for something" e.g. 他是一位以博学而闻名的学者.
Oh and, when you want to say "has a reputation for/ is famed for", you can use either 闻名 or 著名 (or even 出名): 他是一位以博学而著名的学者. But you can't use 有名 here. In stead, you split the word 有名 so that you can put the kind of the reputation in between: 他是一位有博学之名的学者.