using System; using static System.Console; using System.Linq; using System.Collections.Generic; using System.Security.Cryptography; class Program { static long NN => long.Parse(ReadLine()); public static void Main() { Solve(); } static void Solve() { var n = NN; var k = NN; var ans = 0L; var plist = P(k); foreach (var p in plist) { ans += Mul(n, p) * Mul(n, k / p); } WriteLine(ans); } static List P(long n) { var ans = new List(); for (var i = 1L; i * i <= n; ++i) { if (n % i == 0) { ans.Add(i); if (i * i < n) ans.Add(n / i); } } return ans; } static long Mul(long n, long p) { return Math.Max(0, p - 1 - Math.Max(0, p - 1 - n) * 2); } }