一开始我是这样写的
#include <stdio.h> void fen(int n) { if(n < 2) return; int m = 2; while(m <= n) { if(n % m != 0) m++; else { n = n / m; printf("%d ",m); fen(n); break; } } } int main() { int n; printf("数入一个整数: "); scanf("%d",&n); printf("因式分解的结果为: "); fen(n); return 0; }
后来改成了
#include <stdio.h> void fen(int n,int m) { while(m <= n) { if(n % m != 0) m++; else { n = n / m; printf("%d ",m); fen(n,m); break; } } } int main() { int n; printf("数入一个整数: "); scanf("%d",&n); printf("因式分解的结果为: "); fen(n,2); return 0; }
第一种每次都从2开始找,这样是浪费时间的,因为每次从上次的m开始找即可