数学趣题——分解质因数
在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: }

浙公网安备 33010602011771号