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;
}