#include <bits/stdc++.h>
using namespace std;
long long bigmod(long long a, long long p) {
  a %= 998244353ll;
  long long r = 1;
  while (p) {
    if ((p & 1)) {
      r = (r * a) % 998244353ll;
    }
    a = (a * a) % 998244353ll;
    p >>= 1;
  }
  return r;
}
struct Modulo {
  long long value;
  Modulo() { value = 0; }
  Modulo(long long v) {
    v %= 998244353ll;
    if (v < 0) {
      v += 998244353ll;
    }
    value = v;
  }
  Modulo operator+(Modulo x) { return Modulo(value + x.value); }
  Modulo operator-(Modulo x) { return Modulo(value - x.value); }
  Modulo operator*(Modulo x) { return Modulo(value * x.value); }
  Modulo operator/(Modulo x) {
    return Modulo(value * bigmod(x.value, 998244353ll - 2));
  }
  Modulo operator+(long long x) { return Modulo(value + x); }
  Modulo operator-(long long x) { return Modulo(value - x); }
  Modulo operator*(long long x) { return Modulo(value * x); }
  Modulo operator/(long long x) {
    return Modulo(value * bigmod(x, 998244353ll - 2));
  }
  bool operator==(long long x) { return value == x; }
  bool operator!=(long long x) { return value != x; }
  bool operator==(Modulo x) { return value == x.value; }
  bool operator!=(Modulo x) { return value != x.value; }
  Modulo power(int p) { return Modulo(bigmod(value, p)); }
  void print() { printf("%lld\n", value); }
};
Modulo ONE = Modulo(1);
Modulo ZERO = Modulo(0);
Modulo Fact[500009];
Modulo ncr(int n, int r) {
  if (r > n || n < 0) return ZERO;
  if (n == 0 && r == 0) return ONE;
  Modulo res = Fact[n] / (Fact[r] * Fact[n - r]);
  return res;
}
int main() {
  int n, k, i;
  Fact[0] = ONE;
  for (i = 1; i < 500009; i++) Fact[i] = Fact[i - 1] * i;
  scanf("%d %d", &n, &k);
  Modulo res = ZERO;
  for (i = 1; i <= n; i++) {
    if (n / i < k) break;
    res = res + ncr(n / i - 1, k - 1);
  }
  res.print();
  return 0;
}
