Android - 简化激进派

时间:2012-04-04 14:33:54

标签: java

我正在尝试制作一个执行二次方程式的计算器。

目前,如果我的结果是小数,则返回NaN。 (编辑:已解决)

我希望结果是简化的基本形式(即√(99)=3√(11))。

我将如何实现这一目标?

这是我到目前为止所做的。

// Do the math
private double mathCalcPlus(double varA,double varB,double varC) {
    return ((-varB + Math.sqrt(varB * varB - 4 * varA * varC)) / 2 * varA);

}

private double mathCalcMinus(double varA,double varB,double varC) {
    return ((-varB - Math.sqrt(varB * varB - 4 * varA * varC)) / 2 * varA);

}

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:1)

这很棒!但是,为了好玩,我决定添加激进标志的顶栏:D

 import java.util.Scanner;

public class Radical {

public static void main(String[] args) {

    System.out.print("Enter the unsimplified radical: ");
    Scanner scan = new Scanner(System.in);
    int input = scan.nextInt();

    recurse(input);

}

public static void recurse(int x) {

    System.out.println("                         ______");
    System.out.println("Attempting to simplify -/" + x);

    int a = 0;
    int b = 0;
    int count = 0;

    for (int i = 1; i < x; i++) {
        if ((i * (x/i)) == x) {
            //System.out.println(i + "<i rest>" + (x/i));
            a = i;
            b = x/i;
            if (Math.sqrt(a)%1==0) {
                if (a != 1) {
                System.out.println("                      ______");
                System.out.println("                   " + (int)Math.sqrt(a) + "-/" + b);
                count = 1;
                }
            }
        }
    }

    if (count>0) {
        recurse(b);
    } else if (count==0) {
        System.out.println("                  ______");
        System.out.println("Cannot simplify -/" + x);
    }

}

}

答案 1 :(得分:0)

就简化激进分子而言,这可能有所帮助。给它简单的激进(让我们说850)它应该返回正确的答案(5- / 34)。它还试图递归地简化激进中的内容,以防它需要再次被分解。

这是写得很快,所以我确定我错过的边缘情况会丢掉计算但我希望它至少有一点帮助。祝你好运!

import java.util.Scanner;

public class Radical {

public static void main(String[] args) {

    System.out.print("Enter the unsimplified radical: ");
    Scanner scan = new Scanner(System.in);
    int input = scan.nextInt();

    recurse(input);

}

public static void recurse(int x) {

    System.out.println("Attempting to simplify -/" + x);

    int a = 0;
    int b = 0;
    int count = 0;

    for (int i = 1; i < x; i++) {
        if ((i * (x/i)) == x) {
            //System.out.println(i + "<i rest>" + (x/i));
            a = i;
            b = x/i;
            if (Math.sqrt(a)%1==0) {
                if (a != 1) {
                System.out.println((int)Math.sqrt(a) + "-/" + b);
                count = 1;
                }
            }
        }
    }

    if (count>0) {
        recurse(b);
    } else if (count==0) {
        System.out.println("Cannot simplify -/" + x);
    }

}

}