#include <bits/stdc++.h>
using namespace std;
const int mod = 998244353;
const long long inf = 5e18;
const int MAX = 5e5 + 100;
long long fact[MAX], inv[MAX];
long long mypow(long long a, long long m, long long p) {
  long long res = 1;
  a %= p;
  while (m > 0) {
    if (m & 1) {
      res = (res * a) % p;
    }
    m /= 2;
    a = (a * a) % p;
  }
  return res;
}
long long getInverse(long long a) { return mypow(a, mod - 2, mod); }
void pre() {
  fact[0] = 1;
  inv[0] = getInverse(1);
  for (long long i = 1; i < MAX; i++) {
    fact[i] = (fact[i - 1] * i) % mod;
    inv[i] = getInverse(fact[i]);
  }
}
long long choose(long long n, long long r) {
  return (((fact[n] * inv[n - r]) % mod) * inv[r]) % mod;
}
int main() {
  pre();
  long long n, k;
  cin >> n >> k;
  if (k == 1) {
    cout << n << endl;
    return 0;
  }
  long long N = n - 1, K = k - 1;
  long long ans = 0;
  if (K >= 2) {
    for (long long nr = K - 1; nr <= N - 1; nr++) {
      ans += choose(nr - 1, K - 2) * (N - nr);
      ans %= mod;
    }
  } else if (K == 1) {
    ans = N;
  };
  for (long long i = 2; i <= n; i++) {
    N = n / i - 1, K = k - 1;
    ;
    if (N < K) {
      break;
    }
    if (K >= 2) {
      for (long long nr = K - 1; nr <= N - 1; nr++) {
        ans += choose(nr - 1, K - 2) * (N - nr);
        ans %= mod;
        ;
      }
    } else if (K == 1) {
      ans += N;
      ans %= mod;
    }
  }
  cout << (ans + mod) % mod << endl;
}
