#include #include #define MAX 2000002 unsigned long int ziValues[MAX]; unsigned long int getGcd(unsigned long int greater, unsigned long int lesser) { unsigned long int modval = (greater%lesser); if(modval==0) return lesser; return getGcd(lesser,greater%lesser); } unsigned long int gcd(unsigned long int a, unsigned long int b) { if(a>b) return getGcd(a,b); else return getGcd(b,a); } long int getNoQns(unsigned long int num) { long int pos = 0; while(num>1) { num=((num+1)/2u); pos++; } return pos; } unsigned long int getZiVal(unsigned long int num) { unsigned long int n, fcnt, primeflag = 1, limit, factor; double tmp; tmp = (double)num; limit = (int)sqrt(tmp)+1; /* printf("%lu - %lu",num, limit);*/ for(n=2u;n<=limit && n