#include <bits/stdc++.h>
using namespace std;
const long long MAXI = 500000;
const long long pr = 998244353;
vector<unsigned long long> f(MAXI, 1), p(MAXI, 0);
unsigned long long moc(unsigned long long a, unsigned long long b,
                       unsigned long long c) {
  if (b == 0) return 1;
  unsigned long long pol = moc(a, b / 2, c);
  pol *= pol;
  pol %= c;
  if (b % 2 == 1) {
    pol *= a;
  }
  return pol % c;
}
unsigned long long invp(unsigned long long a) { return moc(a, pr - 2, pr); }
unsigned long long n_nad_k(long long n, long long k) {
  if (n < k) return 0;
  if (n / 2 < k) k = n - k;
  if (k == 0) return 1;
  if (k < 0) return 0;
  if (pr <= n) {
    unsigned long long dol = invp(f[k]) * invp(f[n - k]);
    unsigned long long ci = dol, cp = pr, cn = 0;
    while (cp < n) {
      cn += k / cp + ((n - k) / cp);
      cp *= pr;
    }
    if (cn != p[n]) return 0;
  }
  unsigned long long vys =
      ((((f[n] * invp(f[k])) % pr) * invp(f[n - k])) % pr) % pr;
  return vys;
}
int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  for (unsigned long long i = 1; i < MAXI; i++) {
    p[i] = p[i - 1];
    unsigned long long ci = i;
    unsigned long long cp = pr;
    while (ci % cp == 0) {
      cp *= pr;
      p[i]++;
    }
    f[i] = (f[i - 1] * (i / (cp / pr))) % pr;
  }
  long long n, k;
  cin >> n >> k;
  long long ans = 0;
  for (long long i = 1; i <= n; i++) {
    long long d = (n / i - 1);
    ans += n_nad_k(d, k - 1);
    ans %= pr;
  }
  cout << ans << endl;
  return 0;
}
