#include <bits/stdc++.h>
using namespace std;
using i64 = long long;
using u64 = unsigned long long;
struct debug {
  ~debug() { cerr << endl; }
  template <class c>
  debug& operator<<(c x) {
    cerr << x;
    return *this;
  }
  template <class c, class d>
  debug& operator<<(pair<c, d> x) {
    *this << "(" << x.first << ", " << x.second << ")";
    return *this;
  }
  template <class c>
  debug& operator<<(vector<c> x) {
    *this << "[";
    int f = 0;
    for (auto it : x) {
      *this << (f ? ", " : "");
      *this << it;
      f = 1;
    }
    *this << "]";
    return *this;
  }
};
const int MOD = 998244353;
const int N = 5e5;
i64 add(i64 a, i64 b) {
  if (a + b >= MOD)
    return a + b - MOD;
  else
    return a + b;
}
i64 mul(i64 a, i64 b) {
  i64 c = a * b;
  if (c >= MOD) c %= MOD;
  return c;
}
vector<i64> fact(N + 5);
vector<i64> inv_fact(N + 5);
i64 mod_inverse(i64 x) {
  int p = MOD - 2;
  i64 ret = 1;
  while (p) {
    if (p & 1) {
      ret = mul(ret, x);
    }
    x = mul(x, x);
    p /= 2;
  }
  return ret;
}
i64 nCr(int n, int r) {
  if (r > n) return 0;
  i64 ret = mul(fact[n], inv_fact[r]);
  ret = mul(ret, inv_fact[n - r]);
  return ret;
}
int main() {
  fact[0] = 1;
  inv_fact[0] = mod_inverse(1);
  for (int i = 1; i <= N; i++) {
    fact[i] = mul(fact[i - 1], i);
    inv_fact[i] = mod_inverse(fact[i]);
  }
  int n, k;
  scanf("%d%d", &n, &k);
  i64 ans = 0;
  for (int i = 1; i <= n; i++) {
    ans = add(ans, nCr(n / i - 1, k - 1));
  }
  printf("%lld\n", ans);
}
