问题描述
给出N个数字,求出有最大的最大质因数的那个数
输入格式
第一行:一个整数N。
接下来的N行,每行一个整数A_i,表示给出的那N个数字。
输出格式
第一行:一个整数,拥有最大的最大质因数的那个数。
样例输入
4
36
38
40
42
样例输出
38
数据规模和约定
60%的数据满足:N<=100
100%的数据满足:N<=2500,A_i<=20000
资源限制
时间限制:1.0s 内存限制:256.0MB
思路:
通过存储每个数字的最大质因数,然后找出最大质因数中的最大值的下标,打印下标对应的数字就可以了。
代码块:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int a[] = new int[n];
for(int i = 0; i < n; i++){
a[i] = sc.nextInt();
}
int max = 0;
int ans[] = new int[n];
for(int i = 0; i < n; i++){
for(int j = 2; j <= a[i]; j++){
int t = a[i];
while(t%j==0){
if(j>max && isP(j)){
max = j;
}
t /= j;
}
}
ans[i] = max;
max = 0;
}
int Ma = 0;
int index = 0;
for(int i = 0; i < n; i++){
if(ans[i] > Ma){
Ma = ans[i];
index = i;
}
}
System.out.println(a[index]);
}
//判断素数
static boolean isP(int n){
for(int i = 2; i*i <= n; i++){
if(n%i == 0){
return false;
}
}
return true;
}
}
评测结果: