以下prim函数的功能是分解质因数
1 2 3 4 5 6 7 8 9 10 | void prim( int m, int n) { if (m >= n) { while (m%n) n++; m/=n; prim(m, n); cout << n << endl; } }
举例:m=6,n=2 m>n; m%n=0,跳出while,n没有加1。此时m=6,n=2 m/=n,此时m=3,n=2 (2为一个质因数) 递归prim(m, n),即prim(3, 2); m>n; m%n=1,n++,此时m=3,n=3,继续while循环 m%n=0,跳出while循环,此时 m=3,n=3 (3为另一个质因数) m/=n,此时m=1,n=3 递归 prim(m, n),即 prim(1, 3); 不满足条件(m > n),返回上层 输出质因数 n=3 输出质因数 n = 2
|