#CF1350A. Orac 与因数

Orac 与因数

题目描述

每个测试的时间限制:2 秒
每个测试的内存限制:256 兆字节

Orac 正在研究数论,他对因数的性质很感兴趣。

对于两个正整数 aabb,如果存在整数 cc 使得 ac=ba \cdot c = b,则称 aabb 的因数。

对于 n2n \ge 2,我们记 f(n)f(n)nn 的最小正因数(除了 11 以外)。

例如:f(7)=7f(7) = 7f(10)=2f(10) = 2f(35)=5f(35) = 5

对于给定的整数 nn,Orac 决定将 f(n)f(n) 加到 nn 上。

例如,如果他有 n=5n = 5,那么新的 nn 将变为 1010。如果他有 n=6n = 6,那么 nn 将变为 88

Orac 非常喜欢这个过程,所以他决定重复这个操作多次。

现在,对于两个正整数 nnkk,Orac 要求你恰好执行 kk 次操作:每次将 f(n)f(n) 加到当前的 nn 上(注意 nn 在每次操作后会变化,因此 f(n)f(n) 也可能变化),然后告诉他 nn 的最终值。

例如,如果 Orac 给你 n=5n = 5k=2k = 2,首先将 f(5)=5f(5) = 5 加到 55 上,得到 n=10n = 10;然后加上 f(10)=2f(10) = 2,得到最终值 n=12n = 12

Orac 可能会多次询问你。

输入格式

第一行包含一个整数 tt1t1001 \le t \le 100)—— 询问的次数。

接下来的 tt 行,每行包含两个正整数 n,kn, k2n1062 \le n \le 10^61k1091 \le k \le 10^9),对应 Orac 的一个询问。

保证所有询问的 nn 之和不超过 10610^6

输出格式

输出 tt 行,其中第 ii 行应包含第 ii 个询问中 nn 的最终值。

3
5 1
8 2
3 4
10
12
12

说明

  • 第一个询问:n=5n = 5k=1k = 155 的因数为 1155,除了 11 以外的最小因数为 55。因此操作将 f(5)=5f(5) = 5 加到 55,结果为 1010
  • 第二个询问:n=8n = 8k=2k = 288 的因数为 1,2,4,81,2,4,8,除了 11 以外的最小因数为 22。第一次操作后 88 变为 10101010 的因数为 1,2,5,101,2,5,10,除了 11 以外的最小因数为 22。第二次操作后变为 1212
  • 第三个询问:nn 的变化过程为:$3 \rightarrow 6 \rightarrow 8 \rightarrow 10 \rightarrow 12$。