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