面试-素因分解
概念
每个大于1的自然数均可写为质数的积,而且这些素因子按大小排列之后,写法仅有一种方式例如:
18=233
20=225(2,2,5唯一确定)
指数:又称素数,指在大于1的自然数中,除了1和该数自身外,无法被其他自然数整除的数
代码
int decompose(int a)
{
for(int i=2;i<a;i++)
{
if (a%i==0)
{
return i;
}
}
return 0;
}
int main(int argc,char* agrv[])
{
int a=20;
int ret=0;
ret=decompose(a);
if(ret==0)
{
return 0;
}
while(ret)
{
int c=ret;
int c1=ret;
while(ret)//返回的数进一步分解,直到其不存在素因子为止
{
ret=decompose(ret);
if(ret==0)
{
printf("%d\t",c1);
}
c1=ret;
}
a=a/c;//计算下一个素因子,(一个数可以写成两个数的乘积)
ret=decompose(a);
if (ret==0)
{
printf("%d\t",a);
}
}
return 0;
}