1 | initial version |

Unfortunately, if you start defining your groups the "normal" way with `groups.misc.AdditiveCyclic`

, you will not find a way to construct subgroups (at least i did not find any `subgroup`

method or similar). So, you will have to use permuation groups (they can compute subgroups) wich is already a workaround.

So, let me suggest to work directly with this basic property of cyclic groups:

$\langle i \rangle \subseteq \langle j \rangle$ in $\mathbb{Z}_n$ if, and only if, $gcd(j,n) | gcd(i,n)$ (where $|$ stands for "divides").

Hence, the following code should do the trick:

```
def gr(n):
G = Graph(n)
for i in range(n):
for j in range(i+1,n):
a,b = gcd(i,n), gcd(j,n)
if (a.divides(b) or b.divides(a)) and a != b:
G.add_edge(i,j)
return G
```

Then, you can do:

```
gr(4).plot()
```

Copyright Sage, 2010. Some rights reserved under creative commons license. Content on this site is licensed under a Creative Commons Attribution Share Alike 3.0 license.