CF546D Soldier and Number Game

题目描述

两个士兵正在玩一个游戏。开始时,第一个士兵选择一个正整数 $n$,并把它交给第二个士兵。然后,第二个士兵尝试进行尽可能多的回合。每一回合,他需要选择一个大于 $1$ 的正整数 $x$,使得 $n$ 能被 $x$ 整除,然后用 $\frac{n}{x}$ 替换 $n$。当 $n$ 变成 $1$ 并且没有其它有效选择时,游戏结束,第二个士兵的得分就是他操作的回合数。 为了让游戏更有趣,第一个士兵选择 $n$ 的形式为 $a!/b!$,其中 $a$ 和 $b$ 为正整数,且 $a\ge b$。这里 $k!$ 表示 $k$ 的阶乘,即不大于 $k$ 的所有正整数之积。 第二个士兵能够获得的最大得分是多少?

输入格式

输入的第一行包含一个整数 $t$($1\le t\le 1000000$),表示士兵们要玩几次游戏。 接下来的 $t$ 行,每行包含一对整数 $a$ 和 $b$($1\le b\le a\le 5000000$),定义了当前游戏中 $n$ 的值。

输出格式

对于每一场游戏,输出第二个士兵可能获得的最大得分。

说明/提示

由 ChatGPT 5 翻译