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