以文本方式查看主题

-  计算机科学论坛  (http://bbs.xml.org.cn/index.asp)
--  『 C/C++编程思想 』  (http://bbs.xml.org.cn/list.asp?boardid=61)
----  一道递归的题目,算法很简单,但编写不好,高手帮忙啊!  (http://bbs.xml.org.cn/dispbbs.asp?boardid=61&rootid=&id=59580)


--  作者:chunlei8725
--  发布时间:3/7/2008 9:25:00 PM

--  一道递归的题目,算法很简单,但编写不好,高手帮忙啊!
把一个数分解成很多质数.例如输入140 输出是2 2 5 7
有一个递归函数fact把完整程序编写出来
--  作者:amani
--  发布时间:3/7/2008 9:52:00 PM

--  
因数分解, 世界级的题目, 搜索一下, 现成的库大把大把. 现代密码学的基础.
--  作者:longshentailang
--  发布时间:3/8/2008 2:31:00 PM

--  

#include   <stdio.h>
#include   <stdlib.h>  
   
int fact(int n)
{
 if (n == 1)
 {
  return 0;
 }
 int i = 2;
 
 while(i)
 {
  if(n % i == 0)
  {
   printf("%d ", i);
   n/=i;
   fact(n);
   break;
  }
  i++;
 }
 printf("\n");
}

int main(void)  
{
 int n = 0;

 printf("\nplease input a number:\n"); 
 scanf("%d",&n);
 printf("%d质数分解为 = \n",n);

 fact(n);

 return 0;
}

这个应该对你有帮助,参考一下哈!


--  作者:chunlei8725
--  发布时间:3/8/2008 4:38:00 PM

--  
谢谢了啊
--  作者:netjian
--  发布时间:3/10/2008 10:37:00 AM

--  
// 质数分解.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <iostream>
using namespace std;

int fact(int n)
{
 if(n == 1)
 {
  return 0;
 }
 int i = 2;
 while(i)
 {
  if(n % i == 0)
  {
   cout<<"\t"<<i;
   n = n / i;
   fact(n);
   break;
  }
  i++;
 }
}

int main(void)  
{
 int n;
 cout<<"please input a number:";
 cin>>n;
 cout<<"质数分解为 = ";
 fact(n);
 cout<<endl;
 return 0;
}


W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
46.997ms