Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.Scanner;
- public class SimpRad4
- {
- public static final String SQUARE_ROOT_SYMBOL = "\u221A";
- public static final int INPUT_FAILURE = -1;
- static long[] simplify( long square )
- {
- long outside = 1;
- long inside = square;
- long[] simplified = { 1, square };
- // Check if it's already a perfect square
- outside = (long)Math.sqrt(square);
- if ((outside * outside) == square)
- {
- simplified[0] = outside;
- simplified[1] = 1;
- return simplified;
- }
- // Find all the squares that could be factors and see if they are
- for (long factor = 2, sqr = 4; sqr <= (square / 2); factor++, sqr = (factor * factor))
- {
- // Is this square a factor?
- if ((square % sqr) == 0)
- {
- simplified[0] = factor;
- simplified[1] = square / sqr;
- }
- }
- // Otherwise, since it hasn't simplified, return the original radical
- return simplified;
- }
- public static String display( long radicand, long multiplier, long newRad, boolean negative )
- {
- String i = negative ? "i" : "";
- String negativeStr = negative ? "-" : "";
- // If it's already simplified
- if (multiplier == 1)
- {
- return (SQUARE_ROOT_SYMBOL + negativeStr + radicand + " = " + i
- + SQUARE_ROOT_SYMBOL + newRad);
- }
- // If it's a perfect square
- else if (newRad == 1)
- {
- return (SQUARE_ROOT_SYMBOL + negativeStr + radicand + " = " + multiplier + i);
- }
- else
- {
- return (SQUARE_ROOT_SYMBOL + negativeStr + radicand + " = " + multiplier + i
- + SQUARE_ROOT_SYMBOL + newRad);
- }
- }
- public static void main( String[] args )
- {
- Scanner user_input = new Scanner(System.in);
- long radicand = INPUT_FAILURE;
- long[] rads;
- boolean isNegative = false;
- String arg;
- 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: ");
- try {
- radicand = Long.parseLong(user_input.next());
- } catch (NumberFormatException e) {
- System.out.print("That's not an integer! ");
- radicand = INPUT_FAILURE;
- continue;
- }
- if (radicand < 0)
- {
- radicand = -radicand;
- isNegative = true;
- }
- }
- // Timing for optimal testing purposes
- long startTime = System.nanoTime();
- rads = simplify(radicand);
- System.out.println(display(radicand, rads[0], rads[1], isNegative));
- long endTime = System.nanoTime();
- System.out.println("This took " + (endTime - startTime) + "ns.");
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment