\documentclass[border=5mm]{standalone}
\usepackage{luamplib}
\begin{document}
\mplibtextextlabel{enable}
\begin{mplibcode}
input colorbrewer-rgb

vardef gcd(expr a, b) = 
  if b = 0: a else: gcd(b, a mod b) fi 
enddef;

beginfig(1);
  for n=2 upto 24: 
    for s=1 upto floor n/2:
      pair p; p = (12n - 24s, -24n);
      path gon; gon = for t=0 upto n/gcd(s,n) - 1:
        10 up rotated (360/n * s * t) -- 
      endfor cycle;
      if (n mod s = 0): 
        fill gon shifted p withcolor PuBuGn[9][1+floor (n/s/6)];
        label("$" & decimal (n/s) & "$", p);
      fi
      draw gon shifted p withpen pencircle scaled 1/8;
    endfor
  endfor
endfig;
\end{mplibcode}
\end{document}
