buenas. las dudas,
- el contenido no necesariamente se tiene que imprimir sobre un formulario. lo que pasa es que algunos script son antiguos y para su tiempo no se utilizaba mucho otras tecnicas. o simplemente el autor de ese script esta obsoleto. a veces se solia utilizar un formulario para integrar contenido dinamico.
- write limpia el contenido del navegador porque el stream (flujo) de entradas de datos esta cerrado. ese stream se abre cuando el navegador solicita un documento y se cierra una vez reciba todos datos. invocar write dentro de estas dos etapas no produce ese problema, pero una vez cerrado la proxima vez que se intente abrir el navegador primero limpia el contenido. no hay forma de abrir un stream y mantener ese contenido.
la solucion que requieres es simplemente
DOM. el DOM provee una forma de acceder a los elementos y manipularlos mediante metodos o propiedades. en este caso, lo que necesitas es un elemento con un ID en html. luego, en javascript tomas la referencia de ese elemento con document.getElementById y escribes el resultado (calculo, contenido, lo que sea) a la propiedad innerHTML de ese elemento.