Du machst 3 ganz elementare Fehler in deinem Code:
- Die vergisst die Decrementierung von n, siehe Antwort von ETechnikerfx
- Eine Syntax a la "int array[] = { [7] = 42 }" funktioniert meines Wissens nach nur bei der Initialisierung von Arrays, nicht bei einem späteren Zugriff. In dem Fall greift man (sowohl lesend als auch schreibend) einfach mit divisors[m] auf das entsprechende Element zu
- Und das ist mit Abstand der wichtigste Fehler: Du hast ein statisches Element der Größe m erzeugt. m ist aber uninitialisiert, d.h. die Größe ist eigentlich unbekannt. Es gibt also mit an Sicherheit grenzender Wahrscheinlichkeit Speicherlecks in dem Code. Du hast 2 Optionen um das Problem zu lösen: Entweder ist dir von vornherein bekannt, wie groß das Array maximal wird => Diese Größe als statisches Array allokieren. Falls das nicht der Fall ist, dann musst die ein dynamisches Array nutzen und es ggf erweitern (Speicherallokation funktioniert mittels malloc/calloc und free)