
这里有个性质:n中最多只含有一个大于sqrt(n)的因子。证明通过反证法:如果有两个大于sqrt(n)的因子,那么相乘会大于n,矛盾。证毕
于是我们发现最多只有一个大于sqrt(n)的因子,对其进行优化。先考虑比sqrt(n)小的,代码和质数的判定类似
最后如果n还是>1,说明这就是大于sqrt(n)的唯一质因子,输出即可。
时间复杂度:O(sqrt(N)))!
代码:
- #include
- using namespace std;
- int n,t,s;
- void f(int x)
- {
- for(int i = 2;i <= x / i;i++)
- if(x % i == 0)
- {
- s = 0;
- while(x % i == 0)
- {
- x /= i;
- s++;
- }
-
-
相关阅读:
Kotlin高仿微信-第33篇-支付-充值
误格式化硬盘怎么办?分享硬盘格式化恢复的实用方法
融云观察:全球 GenAI TOP50 应用的「6 大启示」
记一次edu实战
Ubuntu22.04安装PostgreSQL
记一次由JWT导致的绕过权限
JVM 参数
567. 字符串的排列
数学建模笔记(十五):多元统计分析及R语言建模(含数据代码注释,均可供运行,高版本无法导入包则使用自编代码计算)
LeetCode47-全排列II-剪枝逻辑
-
原文地址:https://blog.csdn.net/weq2011/article/details/127947274