#include #include double S(double x, double yin); double upi(double xin, double yin) { return ((int)xin-S(xin,yin)-1); } double min(double x, double y) { return x>y?y:x; } double S(double x, double yin) { double 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)); }