您的位置:首页 > 其它

求一个数的所有素数因子

2016-04-02 11:46 253 查看
public class FactorTest {

    //要被分解的整数

    private static int number = 0;

    public static void main(String[] args) {

        // 在主函数里分解从1到1000的数

        for (int i = 1; i <= 1000; i++) {

            number = i;

            findFactors();

        }

    }

    public static void findFactors() {

        StringBuffer sb = new StringBuffer(number + "=");

        // 实际上就是求他的质因数

        for (int i = 2; i <= Math.sqrt(number); i++) {

            // 循环求i是不是它的质因数,直到i不是它的因数为止(i = 4能被整除的不可能出现,因为当i=2时已经被全求出来了)

            // 也就是说number % i==0的情况,只有当i为质数时才有可能出现。

            while (true) {

                // 如果能整除,就求number/i的质因数

                if (number % i == 0) {

                    sb.append(i);

                    number /= i;

                    if (number != 1) {

                        sb.append("*");

                    }

                } else {

                    break;

                }

            }

        }

        if (number != 1) {

            sb.append(number);

        }

        System.out.println(sb);

    }

}

测试结果片段

978=2*3*163

979=11*89

980=2*2*5*7*7

981=3*3*109

982=2*491

983=983

984=2*2*2*3*41

985=5*197

986=2*17*29

987=3*7*47

988=2*2*13*19

989=23*43

990=2*3*3*5*11

991=991

992=2*2*2*2*2*31

993=3*331

994=2*7*71

995=5*199

996=2*2*3*83

997=997

998=2*499

999=3*3*3*37

1000=2*2*2*5*5*5
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息