/******************************************************************************
*									      *
*  COMPUTE RAMANUJAN FUNCTION						      *
*  04/02/10 (dkc)							      *
*									      *
******************************************************************************/
#include <math.h>
unsigned int euclid(unsigned int a, unsigned int b);
double mobius(unsigned int a, unsigned int *t);
double ramanuj(unsigned int n, unsigned int k, unsigned int *table) {
unsigned int i,g;
double sum;
g=euclid(n,k);
sum=0.0;
for (i=1; i<=g; i++) {
   if (g!=(g/i)*i)
      continue;
   sum=sum+(double)i*mobius(k/i, table);
   }
return(sum);
}