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

}
经验分享 程序员 微信小程序 职场和发展