对于每个 x,先不断除以 2,得到它的奇数部分 y。
先找出所有输入中最大的奇数部分 M,只需要使用埃氏筛预处理到
木工坊一次要处理 q 根木料。每根木料的长度是正整数 x。开料规程规定:只能用「奇数素数」作为最小齿距去切开木料,也就是要找 x 的最小奇素因子。若长度是 2 的幂,则不存在大于 1 的奇数因子,这根木料无法按规程开料,记为 -1。请对每根木料给出这个齿距。
形式化地:对每个 x,输出它的最小奇数素因数;若不存在,输出 -1。
约束:
1 ≤ q ≤ 1002 ≤ x ≤ 100000000000000第一行一个整数 q(1 ≤ q ≤ 100),表示随后要处理的木料根数。
接下来 q 行,每行一个整数 x(2 ≤ x ≤ 100000000000000),表示一根木料的长度。
输出 q 行,每行一个整数:对应木料的最小奇素因子;若不存在,输出 -1。
输入
4
21
8
25
77
输出
3
-1
5
7
说明
21 = 3 × 7,最小奇素因子是 38 = 2^3,没有奇数素因子25 = 5^2,最小奇素因子是 577 = 7 × 11,最小奇素因子是 7输入
1
16
输出
-1
说明
16 = 2^4,无法按规程开料。
输入
2
9
14
输出
3
7
说明
9 = 3^2,答案为 314 = 2 × 7,去掉因子 2 后剩下 7
Scan the QR code below with WeChat to sign in
First-time scan will create your account automatically
请使用微信扫描下方二维码完成注册