#include <bits/stdc++.h>
using namespace std;
using LL = long long;
using ULL = unsigned long long;
using VI = vector<int>;
using VL = vector<LL>;
using PII = pair<int, int>;
using PLL = pair<LL, LL>;
void dout() { cerr << endl; }
template <typename Head, typename... Tail>
void dout(Head H, Tail... T) {
  cerr << H << ' ';
  dout(T...);
}
const int mod = 998244353;
int add(int a, int b) {
  a += b;
  if (a >= mod) a -= mod;
  return a;
}
int mul(int a, int b) { return ((LL)a * b) % mod; }
int binpow(int a, int n) {
  int res = 1;
  while (n > 0) {
    if (n & 1) res = mul(res, a);
    a = mul(a, a);
    n >>= 1;
  }
  return res;
}
const int maxN = 1e6;
int fact[maxN];
int invfact[maxN];
int C(int n, int k) {
  assert(n >= k);
  return mul(mul(fact[n], invfact[k]), invfact[n - k]);
}
int main() {
  ios::sync_with_stdio(false);
  cin.tie(nullptr);
  int n, k;
  cin >> n >> k;
  if (n < k) {
    cout << "0\n";
    return 0;
  }
  fact[0] = 1;
  for (int i = (1); i < (maxN); ++i) fact[i] = mul(fact[i - 1], i);
  invfact[maxN - 1] = binpow(fact[maxN - 1], mod - 2);
  for (int i = (maxN - 1) - 1; i >= (0); --i) {
    invfact[i] = mul(invfact[i + 1], i + 1);
  }
  int ans = 0;
  for (int i = (1); i < (n + 1); ++i) {
    if ((n - i) / i < k - 1) break;
    ans = add(ans, C((n - i) / i, k - 1));
  }
  cout << ans << "\n";
  return 0;
}
