考 虑 x 2 倒 退 回 x 1 考虑x_2倒退回x1 x2退x1

显 然 设 x 2 最 大 质 因 子 是 P , 那 么 x 1 的 最 小 值 是 x 2 − P + 1 显然设x_2最大质因子是P,那么x_1的最小值是x_2-P+1 x2P,x1x2P+1

x 1 的 最 大 值 就 是 x 2 , 因 为 ( x 2 本 身 一 定 有 质 因 子 ) x_1的最大值就是x_2,因为(x_2本身一定有质因子) x1x2,(x2)

那 么 得 出 x 1 的 取 值 是 [ x 2 − P + 1 , x 2 ] 那么得出x_1的取值是[x_2-P+1,x_2] x1[x2P+1,x2]

那 么 对 于 所 有 的 x 1 去 求 x 0 的 最 小 值 , 也 就 是 x 0 − P + 1 那么对于所有的x_1去求x_0的最小值,也就是x_0-P+1 x1x0,x0P+1

做的时候,只需要欧拉筛预处理每个数的最大质因子即可

#include <bits/stdc++.h>
using namespace std;
const int maxn=1e6+10;
int n,ans,a[maxn];
int main()
{
	scanf("%d",&n);
	for(int i=2;i<=n;i++)
	{
		if(!a[i])
			for(int j=2*i;j<=n;j+=i)	a[j]=i;
	}
	int ans=n;
	for(int i=n-a[n]+1;i<=n;i++)
		ans=min(ans,i-a[i]+1);
	cout<<ans;
}