在2~n-1之间找出n的两个因数(不一定是质因数)i和j,即i * j = n;
如果i是质数,则j必须是n的一个质因数,否则继续对j进行质因数分解。
如果j是质数,则i必须是n的一个质因数,否则继续对i进行质因数分解。
1: #include <stdio.h>
2:
3: int IsPrime(int a)
4: {
5: int i;
6: for (i=2; i<a-1; i++)
7: {
8: if (a % i == 0)
9: {
10: return 0;
11: }
12: }
13:
14: return 1;
15: }
16:
17: void PrimeFactor(int n)
18: {
19: int i;
20: if (IsPrime(n))
21: printf("%d ", n);
22: else
23: {
24: for (i=2; i<n-1; i++)
25: {
26: if (n % i == 0)
27: {
28: printf("%d ", i);
29: if (IsPrime(n / i))
30: {
31: printf("%d ", n / i);
32: break;
33: }
34: else
35: PrimeFactor(n / i);
36: break;
37: }
38: }
39: }
40: }
41:
42: int main()
43: {
44: int n;
45: printf("input a integer\n");
46: scanf("%d", &n);
47: PrimeFactor(n);
48: return 0;
49: }