No.1653 Squarefree 解
問題
https://yukicoder.me/problems/no/1653
解法
square-free でない数 は整数 を使って と表すことができます。
のとき、適当な定数 を決めると、 または が成り立ちます。
の範囲は を、 の範囲は をはじめに固定して探索します。
解析
となる の個数は
しかないことが重要です。
となる範囲は連続かつどちらかを固定すると で計算できる (←モデルによる) ので、計算量は、これと、はじめに固定する の個数と、はじめに固定する の個数で、
とすれば
実装
を整数ではなく素数として、先に Atkin の篩で素数列挙をしてから前半をやると速い
後半は を固定すると調べる必要のある はこの制約下で高々 個である
の範囲しか調べる必要がない。 のとき より、 であれば高々 個。
C++, 15 ms https://yukicoder.me/submissions/692585