/*****************************************************************************/ /* */ /* SEARCH FOR PRIME FACTORS */ /* 11/14/06 (dkc) */ /* */ /* Note: This subroutine is the same as "search.c" except the input table */ /* is of the type "short". */ /* */ /*****************************************************************************/ #include <stdio.h> extern unsigned short table3[]; void quotient(unsigned int *a, unsigned int *q, unsigned int divisor); void bigprod(unsigned int a0, unsigned int a1, unsigned int multiplier, unsigned int *product); unsigned int powquot(unsigned int a, unsigned int index); unsigned int search(unsigned int *S, unsigned int k) { unsigned int i,j,l,m,count; unsigned int V[2],X[3]; count=0; for (i=0; i<=k; i++) { m=0; l = (unsigned int)table3[i]; quotient(S, V, l); bigprod(V[0], V[1], l, X); if ((S[0]!=X[1]) || (S[1]!=X[2])) continue; aloop: m=m+1; S[0]=V[0]; S[1]=V[1]; quotient(S, V, l); bigprod(V[0], V[1], l, X); if ((S[0]==X[1]) && (S[1]==X[2])) goto aloop; j=powquot(m,0); j=j+j+j; if (j!=m) return(0); else count=count+1; if ((S[0]==0)&&(S[1]==1)) return(count); } if ((S[0]!=0)||(S[1]!=1)) return(0); else return(count); }