こちらのコードは、素数の判定する方法である試し割り法です。
試し割り法というのは2から任意の数nまでの "2~n-1" の数で割っていき割れなければn自身が素数と判定し、割れたらその数がnの素因数だと断定できます。
まず最初の行でこれからnを素因数分解することを定義します。3行目にある通りaという空のリストを用意する事でこのリストにnの素因数達が入って解として出てきます。そのnの判別で4,8行目のそれぞれのループと14行目のコード達の
①nを2で割った余りが0になるとき
② f=3、fの2乗がn以下になるとき
③ 上記のコードで割り切れない時にnが1じゃないとき
以上のことを考えます。
①と②は先ほどの試し割り法の説明における 2~n-1 で割れなくなるまで割ることを表しています。①は2の倍数を指し②は3,5,7,・・・と残りの奇数を表します。
f += 2は 2が1でもできますが、2倍効率的にしています。③では上の①、②を満たさないかつ割れない場合を表しています。
16行目で 'ruturn a' とすることで3行目の a = [] を戻り値として取得し、その時点で関数を終了させることで試し割り法が実行されます。ただし1を任意の数nとした場合 " [] " この空のリストで返します。
以上より試し割り法が実現されます。