@CoryMSimon Easy. Rough idea. You have all multiples of three. Then, you just need to add 1 and 2:
1 = 7*1 - 3*2
3k = 3k
3k+1 = 7*1 +3*(k-2)
3k+2=7*2+3*(k-4)
All terms are positive if k>=5. So, you should be able to get consecutive returning times 15 and up. Not sure if this is optimized.
@CoryMSimon Yeah. I would take the dot product and look for minima. If you normalize |g|=1, you should look for points where the dot prod equals 1. Then, at those points, check the curvature.
@CoryMSimon My guess. You need to consider the gravitational field and the normal vector of the surface. There should be a point where the g field and normal vec are anti-parallel (pointing in opposite directions) and the local curvature of that point is positive.