classSolution { public: intlargestComponentSize(vector<int>& A){ int n = *max_element(A.begin(), A.end()); DSU dsu(n + 1); for(auto a : A) for(int i = 2; i <= sqrt(a); ++i) if(!(a % i)) dsu._union(a, i), dsu._union(a, a / i); unordered_map<int, int> m; int ans = 1; for(auto a : A) ans = max(ans, ++m[dsu._find(a)]); return ans; } };