#include <bits/stdc++.h>
using ll = long long;
const int C = 1000001;
void supfactor(int* pr, int v) {
  int i, j;
  pr[1] = 1;
  for (i = 2; i * i < v; i++) {
    if (pr[i] == 0) {
      for (j = i; j < v; j += i) {
        if (pr[j] == 0) pr[j] = i;
      }
    }
  }
  for (; i < v; i++)
    if (pr[i] == 0) pr[i] = i;
}
int pom[C], pom2[C];
void Sebasort(int tab[], int tab2[], int l, int r) {
  int lim = 2, limi = l + 1, limj = l + 2, j = limi, i = l, k = l;
  while (lim / 2 <= r - l + 1) {
    while (i <= r) {
      if (limj > r) limj = r + 1;
      if ((j < limj && tab[j] < tab[i]) || i >= limi)
        pom[k] = tab[j], pom2[k] = tab2[j], j++;
      else
        pom[k] = tab[i], pom2[k] = tab2[i], i++;
      k++;
      if (i == limi && j == limj) limi += lim, limj += lim, i = j, j = limi;
    }
    for (i = l; i <= r; i++) tab[i] = pom[i], tab2[i] = pom2[i];
    lim *= 2, limi = l + lim / 2, limj = l + lim, j = limi, i = k = l;
  }
}
int toth[C], pos[C], pr[C];
ll sum = 0;
int main() {
  int n, k, i;
  supfactor(pr, C);
  toth[1] = 1;
  for (i = 2; i < C; i++) {
    pos[i] = i;
    if (pr[i / pr[i]] == pr[i])
      toth[i] = toth[i / pr[i]] * pr[i];
    else
      toth[i] = toth[i / pr[i]] * (pr[i] - 1);
  }
  Sebasort(toth, pos, 3, C - 1);
  toth[3] = 3;
  toth[4] = 3;
  scanf("%d %d", &n, &k);
  for (i = 3; i < C && k > 0; i++) {
    if (pos[i] > n) continue;
    sum = sum + toth[i];
    k--;
  }
  printf("%lld\n", sum);
  return 0;
}
