頂点iii(1≤i≤N1 \leq i \leq N1≤i≤N)から到達可能な頂点の集合SiS_iSiについて,SiS_iSiに含まれる頂点に書いてある数の最大公約数をGiG_iGiとします.
与えられた有向グラフを強連結成分分解したとき,同じ強連結成分に含まれる任意の222頂点uuu,vvvについて,明らかにGu=GvG_u = G_vGu=Gvが成り立ちます.従って,まず強連結成分ごとにGCDを求め,次に,強連結成分を頂点とみなした有向非巡回グラフについてDFSの帰りがけ順に子頂点の値のGCDを求めていくことで,全ての頂点におけるGiG_iGiを,O((N+M)log(A))\mathrm{O}((N+M) \log (A))O((N+M)log(A))で求めることができます.