/* ?????????????????????????????¨???????????????????????? */
#include <stdio.h>
#include <stdlib.h>
#include<math.h>

#define NUM 7368791

int main(void)
{
	int m, n;
	int count = 0;
	int i, j;
	int m_pre = 0;
	int used = 0;
	int *p;
	if ((p = malloc(sizeof(int) * NUM)) == NULL) {
		exit(EXIT_FAILURE);
	}
	for (i = 0; i < NUM; i++) {
		p[i] = 1;
	}
	
	/* ??????????????§??°???????????? */
	int compare = (int)pow(NUM, (1.0 / 2.0));

	while (scanf("%d %d", &m, &n) == 2) {
		if (m == 0 && n == 0) {
			break;
		}
		else{
			if (n < 1000) {
				count = m;
				while (n >= used) {
					for (j = m; j <= count; j++) {
						/* printf("count = %d, used = %d\n", count, used); */
						if (count > m) {
							if ((count % j) == 0) {
								break;
							}
							if (j == (count - 1)) {
								used++;
							}
						}
						else {
							used++;
							/*printf("check\n"); */
						}
					}
					count++;
					/*printf("???: count = %d, used = %d\n", count - 1, used); */
				}
				printf("%d\n", count - 1);

				/* ????????? */
				used = 0;
			}
			else {
				if (m <= m_pre) {
					for (i = m; i <= m_pre; i++) {
						for (j = 2; NUM > (j * i); j++) {
							p[(i * j) - 1] = 0;
						}
					}
				}
				else {
					/* ????????? */
					for (i = 0; i < NUM; i++) {
						p[i] = 1;
					}
					/* m??\????????°?????????????????°?????????????????¨??? , ??¨????????????????????????????????????????????????*/
					for (i = m; i <= compare; i++) {
						/* i????????°???NUM???????°???????????????? */
						for (j = 2; NUM > (j * i); j++) {
							p[(i * j) - 1] = 0;
						}
					}
				}

				/* count???n + 1??????????????§i????????? -> ????±??????´??????????????§i????????? */
				for (i = m; ; i++) {
					if ((p[i - 1]) == 1) {
						count++;
					}
					if (count == (n + 1)) {
						printf("%d\n", i);
						break;
					}
				}
				/* ????????? */
				m_pre = m;
			}
			/* ????????? */
			count = 0;
		}
	}

	free(p);
	return 0;
}