A,String读取BigInteger做;B,dfs+素数判断,注意回溯条件和边界,注意1输出-1,2输出2;C:用一个堆维护即可,就是java当中的优先队列,set应该也可以(?),循环判断当前堆是否为空即可,对某个较大的量b,用二进制优化优化一下;D:没想出来