#include #include #include int S(int x, int yin); int upi(int xin, int yin) { return ((int)xin-S(xin,yin)-1); } int min(int x, int y) { return x>y?y:x; } int S(int x, int yin) { int sum=0, i, sum1, sum2, dx=1; for(int i=2; i<=yin; i++) { sum1 = ( upi(x/i,min(i-dx,sqrt(x/i))) - upi(i-dx,sqrt(i-dx))) ; sum2 = ( upi(i,sqrt(i)) - upi(i-dx,sqrt(i-dx))); sum+=(sum1 * sum2); } return sum; } unsigned long long pi(unsigned long long x) { return (unsigned long long) upi(x, sqrt(x)); }