Answer:
5 kmph
Step-by-step explanation:
Given: Greg swam 4 kilometers against the current.
Greg swam 16 kilometers with the current.
Rate of the current was 3kmph.
Lets assume the speed of greg swimming with no current be "x".
∴ Speed of swimming against current= 
Speed of swimming with current= 
As given, it took same amount of time to swim both with current and against current.
∴ Forming an equation to find the value of x, which is speed of greg swimming with no current.
We know, 
⇒ 
Multiplying both side by (x+3) and (x-3)
⇒
Using distributive property of multiplication.
⇒ 
Subtracting both side by 4x and adding by 48.
⇒
Dividing both side by 12
⇒
Hence, Greg can swim at the rate of 5kmph with no current.