brainfrz icon

Simplified? Simplifying Radicals

brainfrz | PRO | 09/13/15 09:47:56 PM UTC | 0 ⭐ | 894 👁️ | Never ⏰ | []
Java |

2.74 KB

|

None

|

0 👍

/

0 👎

import java.util.Scanner;
 
public class SimpRad2
{
    static long[] simplify( long square )
    {
        double outside = 1;
        double inside = square;
        long[] simplified = { 1, square };
 
        // Check if it's already a perfect square
        outside = Math.sqrt(square);
        if (outside == Math.floor(outside))
        {
            simplified[0] = (long)outside;
            simplified[1] = 1;
            return simplified;
        }
        
        // Find all the squares that could be factors and see if they are
        long i, sqr;
        for (i = 2, sqr = 4; sqr <= (square / 2); i++, sqr = (i * i))
        {
            // Is this square a factor?
            double in = (double)square / sqr;
            if (in == Math.floor(in))
            {
                simplified[0] = i;
                simplified[1] = (long)in;
            }
        }
        
        // Otherwise, since it hasn't simplified, return the original radical
        return simplified;
    }
 
 
 
    public static void main( String[] args )
    {
        String arg;
        Scanner user_input = new Scanner(System.in);
        long radicand = -1;
        final String SQUARE_ROOT_SYMBOL = "\u221A";
        long[] rads;
        String i = "";
        String negative = "";
 
        try {
            arg = args[0];
            radicand = Long.parseLong(arg);
        } catch( ArrayIndexOutOfBoundsException e ) {
            arg = "";
        } catch( NumberFormatException e2 ) {
            arg = "";
        }
 
        while (radicand < 0)
        {
            System.out.print("Please enter the current radicand:  ");
            arg = user_input.next();
 
            try {
                radicand = Long.parseLong(arg);
            } catch (NumberFormatException e) {
                System.out.print("That's not an integer! ");
                continue;
            }
 
            if (radicand < 0)
            {
                i = "i";
                negative = "-";
                radicand = -radicand;
            }
        }
 
        rads = simplify(radicand);
        // If it's already simplified
        if (rads[0] == 1)
        {
            System.out.println(SQUARE_ROOT_SYMBOL + negative + radicand + " = " + i
                                    + SQUARE_ROOT_SYMBOL + rads[1]);
        }
        // If it's a perfect square
        else if (rads[1] == 1)
        {
            System.out.println(SQUARE_ROOT_SYMBOL + negative + radicand + " = " + rads[0] + i);
        }
        else
        {
            System.out.println(SQUARE_ROOT_SYMBOL + negative + radicand + " = " + rads[0] + i
                                    + SQUARE_ROOT_SYMBOL + rads[1]);
        }
    }
}

Comments