#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++给定n个正整数每个正整数都包含若干种质因子现在小明想知道这些质因子中哪种质因子出现的次数最多注意每个数字中出现的每种质因子只统计一次?输入描述:输入数据共两行。第一行包含一个整数n表示数字个数。第二行包含以空格隔开的n个整数每个数字在2~100000之内。输出描述:输出一个正整数表示出现最多的质因子如果有多个质因子出现一样多输出最小的那一个。给出源码

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

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