Largest prime factor program takes aaaages - Java

后端 未结 6 1509
一向
一向 2020-12-18 12:28

So this is problem 3 from project Euler. For those who don\'t know, I have to find out the largest prime factor of 600851475143. I have the below code:

impor         


        
6条回答
  •  不知归路
    2020-12-18 12:44

    The number of prime factors a number can have is always less than sqrt of that number so that there is no need to iterate through the number n to find its largest prime factor.

    See this code.

        public class LargestPrimeFactor {
            public static void main(String[] args) {
    
                Scanner sc=new Scanner(System.in);
                long num=sc.nextLong();
    
                if(num>0 && num<=2)
                {
                    System.out.println("largest prime is:-" + num);
                    System.exit(0);
                }
    
                int i=((Double)Math.sqrt(num)).intValue();
                int j=3;
                int x=0;
    
                //used for looping through the j value which can also be a prime. for e.g in case of 100 we might get 9 as a divisor. we need to make sure divisor is also a prime number.
                int z=0;
    //same function as j but for divisor
                int y=3;
                int max=2;
    //divisor is divisible
                boolean flag=false;
    //we found prime factors
                boolean found=false;
    
                while(x<=i)
                {
                    y=3;
                    flag=false;
    
                    if(num % j ==0)
                    {
                        if(j>max)
                        {
                            for(z=0;z

提交回复
热议问题