/******************************************************************************
*									      *
*  COMPUTE MOBIUS FUNCTION						      *
*  04/02/10 (dkc)							      *
*									      *
******************************************************************************/
#include <math.h>
double mobius(unsigned int a, unsigned int *table) {
unsigned int i,count,p;
if (a==1)
   return(1);
for (i=0; i<17984; i++) {
   p=table[i];
   if (p>a)
      break;
   if (a==(a/p)*p) {
      a=a/p;
      if (a==(a/p)*p)
	 return(0.0);
      count=count+1;
      if (a==1)
	 break;
      }
   }
if ((count&1)==0)
   return(1.0);
else
   return(-1.0);
}