对于大于1的整数 n,如果 n 是合数,它一定存在一个最小的质因子 p(p≥2)。此时选择 m=p,则 gcd(n,m)=p 为质数,且这是满足条件的最小 m。如果 n 本身是质数,则只能选择 m=n,此时 gcd(n,n)=n 为质数。
因此,问题转化为求 n 的最小质因子:若 n 有质因子,输出最小的那个;否则输出 n 本身。
由于待测数字个数 k≤105,每个 n≤109,对每个 n 直接试除到 n 找到最小因子即可,时间复杂度可以接受。
小 B 正在研究一个有趣的数字游戏。给定一个大于 1 的整数 n,她允许选择一个整数 m(2≤m≤n),然后计算 n 与 m 的最大公约数。如果这个最大公约数恰好是一个质数,她就获得了胜利。
为了尽快达成目标,小 B 希望选出尽可能小的 m。请你帮忙:对于给定的 n,找出满足条件的最小 m。
本题需要处理多个测试数字,请依次输出每个 n 对应的答案。
约束条件:待测数字的个数不超过 105,每个整数 n 满足 2≤n≤109。
By signing up a CodeFun2000 universal account, you can submit code and join discussions in all online judging services provided by us.