🍑 OJ专栏
🍑 HDOJ 2710 Max Factor
输入
4
36
38
40
42
输出
38
👨🏫 注意:输入不定组数据,每组数据 一个 n 和 n个数
🍑 思路
🍤 用质数筛合数,从小到达筛一遍,预处理一个最大质因子表
import java.util.Scanner;
public class Main
{
static int N = 20010;
// 存 i 的最小质因子
static int[] p = new int[N];
// 初始化最小质因子数组
static void init()
{
p[1] = 1;
for (int i = 2; i < N; i++)
{
if (p[i] == 0)// p[i] == 0说明 i 是质数
{
// 用质数筛掉它所有的倍数
// 注意:如果有更大的质因子的话会在后边进行覆盖更新
for (int j = i; j < N; j += i)
p[j] = i;
}
}
}
public static void main(String[] args)
{
init();
Scanner sc = new Scanner(System.in);
while (sc.hasNext()) {
int n = sc.nextInt();
int max = 0;
int res = 0;
for (int i = 1; i <= n; i++)
{
int x = sc.nextInt();
if (p[x] > max)
{
max = p[x];
res = x;
}
}
System.out.println(res);
}
}
}
👨🏫 参考题解