#include<cstdio>
#include<cstring>
#include<cmath>
int p[1004], tot;
bool vis[1104];
void init() // 素数打表,注意本题1也是素数
{
int i, j;
for(i = 2; i * i <= 1000; i++)
for(j = i*i; j <= 1000; j += i)
vis[j] = 1;
for(i = 1; i <= 1000; i++)
if(!vis[i])p[tot++] = i;
}
int main()
{
int n, m, i, j;
init();
while( ~scanf("%d%d", &n, &m))
{
printf("%d %d:", n, m);
int cnt = 0;
while(p[cnt] <= n && cnt < tot) cnt++; //统计素数个数
int c = (cnt>>1) - (m - (cnt&1) ); //
c = (c < 0) ? 0 : c; //以上两步确定打印的起始 c
for(i = c; i < c + 2*m-(cnt&1) && i < cnt; i++) //确定打印个数
printf(" %d", p[i]);
puts("\n");
}
return 0;
}
#include<cstdio>
#include<cstring>
#include<cmath>
int p[1004], tot;
bool vis[1104];
void init() // 素数打表,注意本题1也是素数
{
int i, j;
for(i = 2; i * i <= 1000; i++)
for(j = i*i; j <= 1000; j += i)
vis[j] = 1;
for(i = 1; i <= 1000; i++)
if(!vis[i])p[tot++] = i;
}
int main()
{
int n, m, i, j;
init();
while( ~scanf("%d%d", &n, &m))
{
printf("%d %d:", n, m);
int cnt = 0;
while(p[cnt] <= n && cnt < tot) cnt++; //统计素数个数
int c = (cnt>>1) - (m - (cnt&1) ); //
c = (c < 0) ? 0 : c; //以上两步确定打印的起始 c
for(i = c; i < c + 2*m-(cnt&1) && i < cnt; i++) //确定打印个数
printf(" %d", p[i]);
puts("\n");
}
return 0;
}