如果先把数组的乘积算出来,就算开longlong也会爆的,所以我们可以在算乘积的同时,去算不同质因数
class Solution {
public:
bool find(int t, vector<int> &ans)
{
for (auto &it : ans)
{
if (it == t)
return true;
}
return false;
}
int distinctPrimeFactors(vector<int>& nums) {
long long sum = 1;
vector<int> ans;
for (auto &t : nums)
{
sum *= t;
for (int i = 2; i <= sum ; i++)
{
if (sum % i == 0)
{
if (!find(i, ans))
{
ans.push_back(i);
sum /= i;
}
while (sum % i == 0)
{
sum /= i;
}
}
}
}
if (sum > 1) return ans.size() + 1;
return ans.size();
}
};