Если вам не нужно, чтобы он был универсальным для любого числа строк, но только для этого случая, так что 1-го цикла будет вполне достаточно.
for (int i = 0; i < 5; i++) {
if (i == 0 || i == 4) //1st and 5th rows
printf("%d %d\n", i + 1, i + 13);
else if(i == 1 || i == 3)//2nd and 4th rows
printf("%d %d %d %d\n", i + 1, i + 5, i + 9, i + 13);
else
printf("3 7 9 11 15\n");//3rd row
}
, если вы хотите, чтобы он был универсальными зависит от ввода пользователем номера строки - просто добавьте еще один цикл for и вычислите количество пробелов, которое вам нужно, и то, какое число для печати зависит от количества итераций.