#include <bits/stdc++.h>
#pragma warning(disable : 4996)
const long long MOD = 998244353;
using namespace std;
const int max_comb = 500000;
vector<long long> fac(max_comb + 1);
vector<long long> ifac(max_comb + 1);
long long mpow(long long x, long long n) {
  long long ans = 1;
  while (n != 0) {
    if (n & 1) ans = ans * x % MOD;
    x = x * x % MOD;
    n = n >> 1;
  }
  return ans;
}
long long minv(long long x) { return mpow(x, MOD - 2); }
long long comb(int a, int b) {
  if (a == 0 && b == 0) return 1;
  if (a < b || a < 0) return 0;
  long long tmp = ifac[a - b] * ifac[b] % MOD;
  return tmp * fac[a] % MOD;
}
long long perm(int a, int b) {
  if (b == 0) return 1;
  if (a < b || a < 0) return 0;
  long long tmp = ifac[a - b] % MOD;
  return tmp * fac[a] % MOD;
}
void pre_comb() {
  fac[0] = 1;
  ifac[0] = 1;
  for (int i = 0; i < max_comb; i++) {
    fac[i + 1] = fac[i] * (i + 1) % MOD;
    ifac[i + 1] = ifac[i] * minv(i + 1) % MOD;
  }
  return;
}
void solve() {
  pre_comb();
  int n, K;
  scanf("%d%d", &n, &K);
  long long ans = 0;
  int i;
  for (i = 1; i <= n; i++) {
    int num = (n / i - 1);
    if (num >= K - 1) {
      ans = (ans + comb(num, K - 1)) % MOD;
    }
  }
  printf("%lld\n", ans);
  return;
}
int main(int argc, char* argv[]) {
  solve();
  return 0;
}
