#include #include <unordered_map> #include using namespace std;

bool is_prime(int num) { if (num < 2) return false; for (int i = 2; i * i <= num; i++) { if (num % i == 0) return false; } return true; }

vector get_prime_factors(int num) { vector res; for (int i = 2; i <= num; i++) { if (is_prime(i) && num % i == 0) { res.push_back(i); while (num % i == 0) { num /= i; } } } return res; }

int main() { int n; cin >> n; unordered_map<int, int> count; int max_count = 0; int max_factor = 0; for (int i = 0; i < n; i++) { int num; cin >> num; vector prime_factors = get_prime_factors(num); for (int factor : prime_factors) { count[factor]++; if (count[factor] > max_count || (count[factor] == max_count && factor < max_factor)) { max_count = count[factor]; max_factor = factor; } } } cout << max_factor << endl; return 0; }

C++ 算法:寻找出现次数最多的质因子

原文地址: https://www.cveoy.top/t/topic/oxPV 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录