as suggested by arvkum02 in above reply , the steps are
1) generate straight forward div-by-5 with 40% duty cycle.
lets say its clkA.
2) feed this clkA to -ve edge triggerd flop . lets say the output is clkB.
3) required 50% duty cycle clk is OR of clkA and clkB.
clk50 = clkA | clkB;
Below is a pseudo code . u can use similar format for div-by-3/7/9/ etc ...
=========================
reg [2:0] count;
always @(posedge clk or negedge reset_n)
if (~reset_n)
count<=0;
else if (count == 3'd4)
count<=0;
else
count <=count+1;
assign clkA = count[1];
always@(negedge clk)
clkB <= clkA;
assign clk50 = clkA | clkB;
============================
In case , they ask u this question in interview ( Which 80% of time this will)
and u get hired , then Thank me (and arvkum2) in your Heart!!.