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); } }