JAVA-蓝桥杯-算法训练 最大质因数
问题描述 给出N个数字,求出有最大的最大质因数的那个数 输入格式 第一行:一个整数N。 接下来的N行,每行一个整数A_i,表示给出的那N个数字。 输出格式 第一行:一个整数,拥有最大的最大质因数的那个数。 样例输入 4 36 38 40 42 样例输出 38
代码如下:
import java.util.Scanner;
public class 最大质因数 {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc=new Scanner(System.in);
int n = sc.nextInt();
int num;
int sum=0; //记录质因数里面的最大值
int sum1 =0; //记录用户数字的最大值
int arr[]=new int[1000];
for (int i = 0; i <n; i++) {
int count = 0;//用来记录每个数分解后的因数个数
num=sc.nextInt();
int a = num; //备份一个num,防止num发生改变
for (int j = 2; j <num; j++) {
//存入num数字的质因数
if (num%j==0) {
arr[count]=j;
num=num/j;
count++;
j=1;
}
}
if (num!=0) {
//如果最后num是质数的话,那么就不会被存入到数组中,这是我们要进行一个判断,
arr[count]=num;
}
for (int j = 0; j <count+1; j++) {
//循环遍历数组,判断最大质因数
boolean bool = false;
for (int j2 = 2; j2 <arr[j]; j2++) {
if (arr[j]%j2==0) {
bool = true;
break;
}
}
if (bool==false&&arr[j]>sum) {
sum=arr[j]; //存入最大质因数的值
sum1=a; //并且把拥有最大质因数的数值存入sum1中
}
}
}
System.out.println(sum1);
}
}
