华为笔试题02

C_C++_LQC_03.因数分解

  • 题目描述:

将一个正整数(1000以内)分解质因数。

 

每个合数都可以写成几个质数相乘的形式,这几个质数就都叫做这个合数的质因数。如果一个质数是某个数的因数,那么就说这个质数是这个数的质因数。而这个因数一定是一个质数。质因数就是一个数的约数,并且是质数,比如8=2乘2乘2,2就是8的质因数。12=2×2×3,2和3就是12的质因数。把一个式子以12=2×2×3的形式表示,叫做分解质因数。16=2×2×2×2,2就是16的质因数,把一个合数写成几个质数相乘的形式表示,叫做分解质因数

  • 要求实现函数:

int Divifact(int InputDec, int *pOutPutStr);

【输入】a:  输入数字InputDec

        b: 输入数字组pOutPutStr        

【输出】 返回:数字InputDec的因数,注意InputDec为1000以内;

【注意】只需要完成该函数功能算法,中间不需要有任何IO的输入输出

  • 示例
  • 例如:输入“90”;

输出:“ 2 3 3 5”

 

 

#include "stdafx.h"
#include <iostream>
using namespace std;


void Divifact(int InputDec)//,int *pOutPutStr)
{
	cout<<InputDec<<"=";
	int m=0;
	int j=0;
	int s[10]={0};
	while(InputDec>2)
	{
		m=0;
		for(int i=2;i<sqrt((double)InputDec);i++)
		{
			if(InputDec%i==0)
			{
				s[j]=i;
				++j;
				InputDec=InputDec/i;
				m=1;
				break;
			}			
		}
		if(m==0)
		{
			s[j]=InputDec;
			break;
		}		
	}	
	j=0;	
	while(s[j]!=0)
	{
		cout<<s[j]<<" ";
		j++;
	}
}
int _tmain(int argc, _TCHAR* argv[])
{
	Divifact(86);
	return 0;
}

  

posted @ 2013-08-22 19:52  一桶白开水  阅读(249)  评论(0编辑  收藏  举报