题目描述
在数字变换系统中,数字之间的转化遵循以下规则:
- 任意正整数 x(x>1)可以转化为它的任意一个质因数(能整除 x 的质数),反之亦然(质因数也能转化为 x)。例如:100 的质因数为 2 , 5 ,所以 100可以变为 2 ,也可以变为 5 。反过来说 5 或者 2 也可以变为 100 。
- 若 x 是质数,则 x 可以转化为 1,反之 1 可以转化为任意质数。
给定正整数 n 和起始数字 x(1≤x≤n),请计算 x 转化为 1 到 n 中每个正整数的最少步数。若无法转化,步数为 −1。
输入格式
输入一行包含两个正整数 n 和 x(1≤x≤n≤50000),分别表示数字范围和起始数字。
输出格式
输出一行包含 n 个整数,依次表示 x 转化为 1,2,…,n 的最少步数,整数之间用空格分隔。
样例
样例输入
8 4
样例输出
2 1 3 0 3 2 3 2
样例解析
- 转化规则应用:
- 4 的质因数为 2(4→2,步数 1);
- 2 是质数,可转化为 1(2→1,步数 1,累计 2 步从 4 到 1);
- 1 可转化为任意质数(如 3,5,7),因此 4→2→1→3 需 3 步;
- 6 的质因数为 2 和 3,因此 4→2→6 需 2 步(2 是 6 的质因数);
- 8 的质因数为 2,因此 4→2→8 需 2 步。
数据范围与提示
-
数据范围:
- 80% 的评测用例满足 n≤1000;
- 100% 的评测用例满足 1≤n≤50000,1≤x≤n。
-
转化逻辑:
- 质因数定义:若质数 p 能整除 x(x%p=0 且 p<x),则 p 是 x 的质因数。
- 步数计算:每一次转化记为 1 步(如 x→p 记为 1 步,p→1 记为 1 步)。