int a = (14 - M) / 12; int y = Y + 4800 - a; int m = M + 12 * a - 3; int J = D + (153 * m + 2) / 5 + 365 * y + y / 4 - y / 100 + y / 400 - 32045; int d4 = (J + 31741 - (J % 7)) % 146097 % 365224 % 1461; int L = d4 / 1460; int d1 = ((d4 - L) % 365) + L; int WN = d1 / 7 + 1; return WN;