By default the text is going to flow in a square. If you find the largest square that fits in the circle, you can then adjust the padding to accommodate it. The way to calculate, the biggest square that fits in the circle is with this formula:
square root of ((radius squared) / 2)
square root of ((200 * 200)/ 2);
square root of (40000/2);
square root of (20000) = 141.
So the content are is 141px x 141px. Since your circle is technically a 200x200 box, the padding needs to be (200 - 141)/2 = 29.5px;
So you then want to center it vertically. There are many "hacks" to do this. I am using one of many below. See https://www.w3.org/Style/Examples/007/center.en.html
#circle {
box-sizing:border-box;
background:blue;
width:200px;
height:200px;
text-align:center;
font-family:monospace; /* fixed size font, making it easy to implement */
line-height:18px;
font-size:18px;
border-radius:100px;
padding:29px;
position: relative
}
#circle p {
box-sizing:border-box;
width:141px;
padding:0;
margin: 0;
position: absolute;
top: 50%;
transform: translate(0, -50%)
}
<div id="circle">
<p>Hello World Helo World Helo World Helo World Helo World</p>
</div>