I am trying to make a ship move around a central point at a fixed distance away from that point (along a circle around that point).

What is an efficient way to achieve this?

The actual movement will be dictated by screen touches - the ship will move to the closest point along that circular path (via that circular path) that is closest to the screen touch.

using UnityEngine;
using System.Collections;
public class Ship: MonoBehaviour
{
public float Speed; //set this to something like 10
public float Rotation; //set this to something like 1
void Update ()
{
transform.Translate(Vector3.forward * Speed * Time.deltaTime);
transform.Rotate (0, Rotation, 0);
}
}

Maybe the code needs some improvements but the idea is there.

So simply each frame boat goes forward for some amount and also each frame boat rotates for some amount,

if SPEED and ROTATION are always constants, the boat will make circles for sure
Speed and rotation are factors for radius of the circle, so you will have to change them to get the size that you like.

Experiment with speed and radius.

I think that speed represents how big circle would be
and radius represents how fast would boat make loops.

Note that this may fail if the query point is very close to the circle center.

Once you have the closest point, you can determine in which direction around the circle the distance to the closest point is the least using some simple vector math, and then move the ship in that direction. (I obviously skipped over some details here, but you can post back if you have specific questions.)