#include <bits/stdc++.h>
using namespace std;
template <typename T>
void read(T &x) {
  x = 0;
  char ch = getchar();
  long long f = 1;
  while (!isdigit(ch)) {
    if (ch == '-') f *= -1;
    ch = getchar();
  }
  while (isdigit(ch)) {
    x = x * 10 + ch - 48;
    ch = getchar();
  }
  x *= f;
}
template <typename T, typename... Args>
void read(T &first, Args &...args) {
  read(first);
  read(args...);
}
template <typename T>
void write(T arg) {
  T x = arg;
  if (x < 0) {
    putchar('-');
    x = -x;
  }
  if (x > 9) {
    write(x / 10);
  }
  putchar(x % 10 + '0');
}
template <typename T, typename... Ts>
void write(T arg, Ts... args) {
  write(arg);
  if (sizeof...(args) != 0) {
    putchar(' ');
    write(args...);
  }
}
const long long MOD = 998244353;
const int MAXN = 5e5 + 50;
long long n, k, fac[MAXN], inv[MAXN];
void pre() {
  fac[0] = fac[1] = inv[0] = inv[1] = 1;
  for (register int i = 2; i <= 5e5; ++i) {
    fac[i] = fac[i - 1] * i % MOD;
    inv[i] = -inv[MOD % i] * (MOD / i) % MOD;
    while (inv[i] < 0) {
      inv[i] += MOD;
    }
  }
  for (int i = 2; i <= 5e5; i++) {
    inv[i] = inv[i] * inv[i - 1] % MOD;
  }
}
long long C(int n, int m) {
  if (n < m) {
    return 0LL;
  } else {
    return fac[n] * inv[m] % MOD * inv[n - m] % MOD;
  }
}
int main() {
  pre();
  read(n, k);
  long long ans = 0;
  for (register int i = 1; i <= n; ++i) {
    int p = n / i - 1;
    (ans += C(p, k - 1)) %= MOD;
  }
  cout << ans << endl;
  return 0;
}
