As a high school student and a math competition participant, I found this book to be a very good enlightenment of my Number Theory knowledge. It is not extremely hard to understand. Some of them are even easy. Everything is introduced as a level which is just enough to be understood and applied.
Things I found interesting and helpful are those exercising examples provided. It will always provide a complete example to show an algorithm or explain how to prove a theorem. As an OIer once, I learned several algorithms including EGCD and Fast Powering several years ago, but I have neither tried to work it out by hand, nor tried to test and prove the validity of those algorithms.
One thing I learned from this book is that you need to test out and play around with numbers in order to discover some new patterns and modes. And I believe I will read this book again because this time I didn't really tried to work on those exercises. It's required, just like people need to go underwater in order to learn swimming.
Then I realized that, the key of this book is not to learn how to prove fancy theorems and how to become a master in Number Theory, but how to start working on studying numbers.
Because of that, this book purposefully serves as an introduction, not a guidance, it can only provide basic knowledges of Number Theory and some fundamental proofs. The solutions provided for practice problems is really brief and not very helpful. I personally found it more helpful to re-read the examples than reading the solutions.
I think this book is very helpful to students who know nothing about Number Theory and want to know about it and are not college students yet. College number theory definitely requires more skills and deeper understanding beyond this book, and college students can find more helpful books such as Elementary Number Theory and Its Applications.
But for students like me or even younger, it is a good way to let them know about what is Number Theory and what do mathematicians do with it.