检查素数因子分解中的素数

时间:2017-10-19 05:51:29

标签: java

我有以下用于素数分解的代码。

public static void primeFactors(int n)
{
    for (int i = 2; i <= Math.sqrt(n); i = i+1)
    {     
        while (n%i == 0)
        {
            factors.add(i);
            n = n/i;
        }
    }

    if (n>2 ) {
        factors.add(n);
    }
    System.out.println(factors);            
}

从数学的角度来看,我们必须检查每个除数i是否也是素数而不仅仅是因子。任何人都可以(数学上)解释为什么算法仍然有效?

1 个答案:

答案 0 :(得分:1)

假设<!doctype html> <!-- distance.html Mason Boroff --> <!-- =================================================== --> <html> <head> <title> Distance Calculator </title> </head> <body> <h2>Distance Calculator</h2> <p> Coordinate 1: (<input type="text" id="xOne" size=12 value=''> , <input type="text" id="yOne" size=12 value=''>) <br> Coordinate 2: (<input type="text" id="xTwo" size=12 value=''> , <input type="text" id="yTwo" size=12 value=''>) <br> <br> <input type="button" onclick="ShowDistance()" value="Calculate Distance"> </p> <hr> <div id="outPut"> </div> </body>不是素数;说i = i其中j * kj小于k。这意味着当我们的循环达到i时,它首先已达到ij。在我们完成k的循环之后,j无法再被n整除,因为我们已经将j中的所有j分解出来了。同样适用于k。因此,当我们为i执行循环时,我们知道n无法再被jk整除;因此它不能被i整除。所以永远不会执行while循环。这意味着我们不需要对非素数i进行特殊检查,因为无论如何都不会发生。