import java.util.*; public class Solution { private static Map mp; private static List primes; static long longestSequence(long[] a) { long finalResult = 0; for(int i=0;i primesUpTo(int n) { List pNum = new ArrayList(); boolean prime[] = new boolean[n+1]; for(int i=0;i99999){ largestPrimeDivisor = hugePrimeFactor(value); if(largestPrimeDivisor==1){ largestPrimeDivisor = largestPrimeFactor(value); } }else{ largestPrimeDivisor = largestPrimeFactor(value); } long divisor=1; if(largestPrimeDivisor==2){ divisor = 1; for(int i=1;i<=39;i++){ divisor = divisor*largestPrimeDivisor; if(divisor >= value){ divisor=divisor/largestPrimeDivisor; break; } if(value%(divisor)!=0){ divisor=divisor/largestPrimeDivisor; break; } } }else{ divisor=value/largestPrimeDivisor; } finalResult=finalResult+peices; finalResult=longestValue(divisor,finalResult,peices*(value/divisor)); return finalResult; } public static long largestPrimeFactor(long number) { for(int i = primes.size()-1;i>=0;i--){ if(number%primes.get(i)==0) return primes.get(i); } return number; } public static long hugePrimeFactor(long number) { for(int j=0;j