投稿します。
やりたいアイデアは簡単なのですが、ワークフローにするのに苦労しました(勉強になりました)。
アイデア
リストの一番上の数字で残りの行の剰余をとり、割り切れないものを残す
残ったリストについて上を繰り返す
苦労した点
一つのマクロでは対応できないこと
・一番上の数字を他のツールに渡す方法(→バッチマクロのコントロールパラメータを使いたい)
・同じ処理を繰り返す方法(→反復マクロを使いたい)
解決策
結局、マクロをネストすることで解決しました。
・リストの1行目にあるデータ(今までに見つかった最小の素数)を Filter ツールに渡すためのバッチマクロ
・そのマクロに 自然数のリスト と 次に処理するべき素数を渡して反復処理させるための反復マクロ
問題どおりの50までの自然数で0.5秒かかりました。
50,000までの自然数でやってみると、5133個の素数(=5133回の反復)で44.8秒かかりました。
将来の課題
また、全体の半分(50だったら25)の処理を超えたら残っているものはすべて素数のはずだから、
処理を中断して残りのリストを全部 出力するようにすると、処理が効率化できると考えています。
50,000件の処理であれば恐らく2762回の反復、24秒程度で終わると期待されます。
ただ、それをすると反復マクロを終了する条件を渡す必要があり、さらに複雑になりそうなので、今回は見送りました。
簡単で良い方法があればお知らせください。
反復マクロ
バッチマクロ