Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2529348
  • 博文数量: 308
  • 博客积分: 5547
  • 博客等级: 大校
  • 技术积分: 3782
  • 用 户 组: 普通用户
  • 注册时间: 2009-11-24 09:47
个人简介

hello world.

文章分类

全部博文(308)

分类: C/C++

2010-07-21 15:25:57

    今天看到一个题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。题目中给出了解题的分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:

  (1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。

  (2)如果n<>k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n,重复执行第一步。

  (3)如果n不能被k整除,则用k 1作为k的值,重复执行第一步。
    例题中给出了C程序的源程序,不过我想用递归进行操作。经过调试终于调试通过了代码如下:

#include <stdio.h>

void fenjie_zhiyinshu(int);
int main(int argc,int *argv[])
{
    int number;
    printf("please input a numer:");
    scanf("%d",&number);
    fenjie_zhiyinshu(number);
    system("pause");
    return 0;
}

void fenjie_zhiyinshu(int number)
{
    int i,j,k;
    for (i = 2; i <= number; i++)
    {
        if (number % i == 0)
        {
           j = number / i;
           if (j == 1)
           {
              printf("%d",i);
              return ;
           }
           else
           {
             printf("%d * ",i);
             fenjie_zhiyinshu(j);
             break;
           }
        }
    }
}


阅读(11072) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~