1 条题解
-
0
自动搬运
来自洛谷,原作者为

一扶苏一
休息结束。邮箱 yifusuyi@qq.com搬运于
2025-08-24 21:14:35,当前版本为作者最后更新于2018-04-05 21:32:18,作者可能在搬运后再次修改,您可在原文处查看最新版自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多
以下是正文
B3715 分解质因子 2
Analysis
唯一分解定理:对任意大于 的正整数 ,设 的质因子分别为 ,则 一定能分解为上述质因子若干次幂的乘积,即 。并且这种分解方式是唯一的,也就是不存在另一种分解方式使得对应质因子的指数不同。
引理:对任意大于 的正整数 , 至多有一个大于 的质因子。假设该质因子存在,它在唯一分解式中的指数一定是 。
证明:
- 假设 有两个大于 的质因子 ,写出 的唯一分解式 ,其中 。得 ,矛盾。这就证明了至多只有一个大于 的质因子。
- 在上式中取 ,矛盾仍成立。这就证明了若唯一大于 的质因子存在,则它在唯一分解式中的指数一定是 。
质因子分解:根据上述引理,只需要枚举 ,通过试除可以求出 所有小于 的质因子。在 除掉这些质因子后如果不为 ,则剩下的数就是那个大于 的质因子。对于一次查询,时间复杂度 。
Code
#include <iostream> int main() { int T; for (std::cin >> T; T; --T) { long long n; std::cin >> n; long long m = n; for (int i = 2; 1ll * i * i <= n; ++i) while (m % i == 0) { m /= i; std::cout << i << ' '; } if (m != 1) { std::cout << m; } std::cout << std::endl; } }
- 1
信息
- ID
- 8406
- 时间
- 1000ms
- 内存
- 512MiB
- 难度
- 2
- 标签
- 递交数
- 4
- 已通过
- 1
- 上传者