CloudCoder Python feladatgyujtemeny/osztok szotara

A MathWikiből

A hiba az, hogy az osztok = [] sornak az első cikluson belül kéne lennie, hisz minden számhoz elölről kell kezdeni az osztók listájának megalkotását. Ha ezt kijavítjuk, már jó a megoldás.

Azonban, így felesleges a "if i not in osztok:" sor, hisz minden i csak egyszer lehet úgyis. Szintén fölösleges a sorted() használata, hisz úgyis nagyságrendben találjuk meg az osztókat. Így a végleges kijavított és egyszerűsített kód:

def osztok_szotara(l):
    szotar = {}
    for szam in l:
        osztok = []
        for i in range(1, szam):
            if szam % i == 0:
                osztok.append(i)
        szotar[szam] = osztok
    return szotar
Személyes eszközök