微创笔试题,求教好算法
就是要求将任意输入的一个整数分解成质数相乘的形式输出:
例如:输入9 输出 9=3*3;输入12 输出 12=2*2*3
本人当时一时想不出好办法,用一个很笨的方法也不知道对不对
我首先求出该整数范围内的素数,例如12内的素数2,3,5,7,11从小到大放在一个数组prime中
然后用递归的方法依次判断该整数是否能被这些素数整除,如果可以就输出一个2,大致如下所示
analyze(int n) {
if(n==1) return(0);
for(int i=1;i<prime.length;i++) {
if(n mod prime[i]==0) {
print(prime[i]);
n/=prime[i];
if(n!=1) print("*") /打印*号
analyze(n);
}
}
不知道这种方法是不是可行,各位有没有更好的方法