/*
  AOJ 1269
 */
#include <stdio.h>
#include <string.h>

char prime_flag[65536];

int prime1120[]={2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,
		 67,71,73,79,83,89,97,101,103,107,109,113,127,131,
		 137,139,149,151,157,163,167,173,179,181,191,193,
		 197,199,211,223,227,229,233,239,241,251,257,263, 
		 269,271,277,281,283,293,307,311,313,317,331,337,
		 347,349,353,359,367,373,379,383,389,397,401,409,
		 419,421,431,433,439,443,449,457,461,463,467,479,
		 487,491,499,503,509,521,523,541,547,557,563,569,
		 571,577,587,593,599,601,607,613,617,619,631,641,
		 643,647,653,659,661,673,677,683,691,701,709,719,
		 727,733,739,743,751,757,761,769,773,787,797,809,
		 811,821,823,827,829,839,853,857,859,863,877,881,
		 883,887,907,911,919,929,937,941,947,953,967,971,
		 977,983,991,997,1009,1013,1019,1021,1031,1033,
		 1039,1049,1051,1061,1063,1069,1087,1091,1093,1097,
		 1103,1109,1117 };
int prime_sum[15];
int prime_table[1121];

int memo[1121][15][188];

prime2num(int x)
{
  while(prime_table[x]==0)
    x--;
  return(prime_table[x]);
}
make_prime_sum()
{
  int i,s;

  for(i=s=0;i<=14;i++)
    {
      prime_sum[i]=s;
      s += prime1120[i];
    }
}

int back_search(int n)
{
  int i;

  if(n<2)
    return(-1);
  for(i=n-1;i>=0;i--)
    if(prime_table[i])
      return(i);
  return(-1);
}

int solve(int n,int k,int up)
{
  int ret,n1,idx;

  
  if((ret=memo[n][k][prime2num(up)])>=0)
    return(ret);
  
  if(k==1)
    {
      if(n <= up && prime_table[n])
	ret=1;
      else
	ret=0;
    }

  else if(n < prime_sum[k])
    {
      ret=0;
    }
  else if(n ==prime_sum[k])
    {
      ret=1;
    }
  else
    {
      ret=0;
      n1=n;
      while((n1=back_search(n1)) != -1)
	{
	  if(n1 <= up)
	    ret+=solve(n-n1,k-1,n1-1);
	  n1=n1-1;
	}
    }
  memo[n][k][prime2num(up)]=ret;
  return(ret);
}
void prepare()
{
  int i,c;
  memset(prime_table,0,sizeof(prime_table));
  for(i=c=0;i<sizeof(prime1120)/sizeof(int);i++)
    prime_table[prime1120[i]]=++c;
}

main()
{
  int n,k,ret;

  memset(memo,-1,sizeof(memo));
  make_prime_sum();
  prepare();

  while(scanf("%d %d",&n,&k) && (n||k))
    {
      ret=solve(n,k,n);
      printf("%d\n",ret);
    }

  return(0);
}