/* pfac.c CCMATH mathematics library source code.
*
* Copyright (C) 2000 Daniel A. Atkinson All rights reserved.
* This code may be redistributed under the terms of the GNU library
* public license (LGPL). ( See the lgpl.license file for details.)
* ------------------------------------------------------------------------
*/
static int kpf[26]={2,3,5,7,11,13,17,19,23,29,31,37,
41,43,47,53,59,61,67,71,73,79,83,89,97,101};
int pfac(int n,int *kk,int fe)
{ int num,j,k,dc=1;
if(fe=='e'){ n-=(n%2); dc=2;}
for(;;n-=dc){ num=n; j=k=0;
while(j<31){
if(num%kpf[k]!=0){ if(k==25) break; ++k;}
else{ kk[++j]=kpf[k]; num=num/kpf[k];
if(num==1){ kk[0]=j; return n; } }
}
}
}
syntax highlighted by Code2HTML, v. 0.9.1