质因数分解

mac2022-06-30  31

【原理】

1)设n为要分解的整数,i为除数,i的初始值为最小的质数2

2)判断i和n是否相等,若相等则直接输出n

3)若i和n不相等,继续判断i是否能整除n,若能整除则输出i,同时令n为i除n的商,循环判断。若不能则i++,返回第2)

 

1.递归法

void Decomp(int n, int i) { if (i == n) { printf("%d", n); return; } else { if (n%i == 0) { printf("%d*", i); n = n / i; Decomp(n, i); } else { Decomp(n, i + 1); } } } int main() { int n; scanf("%d", &n); printf("\n%d=",n); Decomp(n, 2); return 0; }

【测试结果】 

 

2.循环法

void Decom(int n) { int i = 2; printf("%d=", n); while (1) { if (i == n) { printf("%d", i); break; } while (n%i == 0) { printf("%d*", i); n = n / i; } i++; } }

 

最新回复(0)