If your computer has a multicore architecture (which is likely), the only way you'll get a high amount of usage is if you make use of multiple threads.
For example, if your computer is a quad-core, you'll only use 25% of the CPU if you use a single thread.
By using multiple threads (either via explicit multithreading code or via something like Parallel.For) you'll get something close to 100%, but not exactly - there are always overheads that keep programs from achieving full usage. The nature of the algorithm (i.e. how parallelisable it is) also makes a big difference. Something like ray tracing is embarrassingly parallel and the overheads are miminal.