用递归法求因式分解

偶尔在网上看到这个题目,但是他们所用的方法,无论是迭代还是递归,感觉都不够简洁。我想,这个看起来很简洁的抽象,应该有简单的方法,终于让我想出来了。

求一个整数的分解因式,如36=2*2*3*3;

代码如下:

//[email protected]
void  fact(int n){ 
    int i;
    for(i=2; i<=n; i++)
        if( n%i == 0 ){
            if(i==n) //最后一个因子
                printf("%d", i);
            else
                printf("%d*", i);
            fact(n/i);
            break;
        }
        else
        ;
}


你可能感兴趣的:(用递归法求因式分解)