数学趣题——分解质因数

在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: }
posted @ 2010-05-26 08:45  红脸书生  阅读(534)  评论(0编辑  收藏  举报