您的位置:首页 > 其它

求质数因子

2012-07-23 21:53 225 查看
功能:输入一个正整数,按照从小到大的顺序输出它的所有质数的因子(如180的质数因子为2 2 3 3 5 )
详细描述:
接口说明

函数原型:void GetResult(unsigned long ulDataInput, char *ulDataOutput);

输入参数: unsigned long ulDataInput:输入的正整数

输出参数(指针指向的内存区域保证有效):char *ulDataOutput:输出的质数因子,其中质因子之间以空格隔开
返回值:void
int IsPrime(unsigned long n)

{

int i,temp = 0;

if (n<=1)

return 0;

if (n==2)

return 1;

if (n%2==0)

return 0;

temp = int(sqrt((double)n) + 1);

for (i=3; i<temp; i=i+2)

{

if (n%i==0)

return 0;

}

return 1;

}

int LenData(unsigned long n)

{

int i = 1;

if (n<=0)

return 0;

if (n/10)

{

i++;

n = n/10;

}

return i;

}

void GetResult(unsigned long ulDataInput, char *ulDataOutput)

{

unsigned long i,len,j;

if (IsPrime(ulDataInput))

{

sprintf(ulDataOutput,"%d",ulDataInput);

return;

}

for (i=2; i<=ulDataInput; i++)

{

while (ulDataInput%i==0)

{

sprintf(ulDataOutput,"%d ",i);

len = LenData(i)+1;

while (len--)

{

ulDataOutput++;

}

ulDataInput = ulDataInput/i;

}

}

return;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: