#3040. 质因数转化

质因数转化

题目描述

在数字变换系统中,数字之间的转化遵循以下规则:

  1. 任意正整数 xxx>1x > 1)可以转化为它的任意一个质因数(能整除 xx 的质数),反之亦然(质因数也能转化为 xx)。例如:100 的质因数为 2 , 5 ,所以 100可以变为 2 ,也可以变为 5 。反过来说 5 或者 2 也可以变为 100 。
  2. xx 是质数,则 xx 可以转化为 11,反之 11 可以转化为任意质数。

给定正整数 nn 和起始数字 xx1xn1 \leq x \leq n),请计算 xx 转化为 11nn 中每个正整数的最少步数。若无法转化,步数为 1-1

输入格式

输入一行包含两个正整数 nnxx1xn500001 \leq x \leq n \leq 50000),分别表示数字范围和起始数字。

输出格式

输出一行包含 nn 个整数,依次表示 xx 转化为 1,2,,n1, 2, \dots, n 的最少步数,整数之间用空格分隔。

样例

样例输入

8 4

样例输出

2 1 3 0 3 2 3 2

样例解析

  • 转化规则应用:
    • 44 的质因数为 22424 \rightarrow 2,步数 11);
    • 22 是质数,可转化为 11212 \rightarrow 1,步数 11,累计 22 步从 4411);
    • 11 可转化为任意质数(如 3,5,73, 5, 7),因此 42134 \rightarrow 2 \rightarrow 1 \rightarrow 333 步;
    • 66 的质因数为 2233,因此 4264 \rightarrow 2 \rightarrow 622 步(2266 的质因数);
    • 88 的质因数为 22,因此 4284 \rightarrow 2 \rightarrow 822 步。

数据范围与提示

  • 数据范围

    • 80% 的评测用例满足 n1000n \leq 1000
    • 100% 的评测用例满足 1n500001 \leq n \leq 500001xn1 \leq x \leq n
  • 转化逻辑

    • 质因数定义:若质数 pp 能整除 xxx%p=0x \% p = 0p<xp < x),则 ppxx 的质因数。
    • 步数计算:每一次转化记为 11 步(如 xpx \rightarrow p 记为 11 步,p1p \rightarrow 1 记为 11 步)。