数列AAのうちMMの倍数であるものの数をKK個とします.

これらKK個からなる部分列の公約数には,必ずMMが含まれます.また,逆に,これらKK個以外の要素を部分列に含めた場合,その公約数にはMMは含まれません.
よって,答えが存在する場合,求める答えは明らかにKKです.MMの倍数であるそれらKK個のGCDがMMにならない(MM22以上の整数をかけた値になる)場合,GCDをMMにすることはできません.

O(N)\mathrm{O}(N)個の数の最大公約数を求めるため,計算量はO(NlogA)\mathrm{O}(N \log A)となります.

コード例(Python)