2019-10-17_任一整数素数乘积分解练习

2019-10-17  本文已影响0人  kikop

任一整数素数乘积分解练习
1.概述
1.1 PrimeDecision
1.1.1 素数判断
/**
* 素数判断
*
* @param n
* @return
/
private boolean isPrime(int n) {
for (int i = 2; i <= Math.sqrt(n); i++) {
if (n % i == 0) {
return false;
}
}
return true;
}
1.1.2 素数分解
/
*
* 数值进行素数分解
*
* @param n
*/
public void decomposeNumber(int n) {

    if (isPrime(n)) { // 不用分解
        list.add(n);
        list.add(1);
    } else {
        //decomposeNumberDetail(n, (int) Math.sqrt(n)); // sqrt分解(乱序)
        decomposeNumberDetail(n, (int) Math.sqrt(n)+1); // sqrt分解(降序)
    }
}

1.1.3 子数分级
/**
* 子素数分解
* @param n
* @param div sqrt后的数值
*/
private void decomposeNumberDetail(int n, int div) {
if (div < 1) {
return;
}
if (isPrime(div) && n % div == 0) { // div复合素数要求
list.add(div);
decomposeNumber(n / div); // 分解剩余数值
} else {
decomposeNumberDetail(n, div - 1); // div不符合素数要求,区下一个
}
}

1.2 完整代码
package com.example.demo;

import java.util.ArrayList;
import java.util.List;

/**

/**

上一篇下一篇

猜你喜欢

热点阅读