酷代码 AI
菜单
服务商

已知正整数 n 是两个不同的质数的乘积,试求出两者中较大的那个质数。 输入 输入一个正整数 n。 输出 输出一个正整数 p,即较大的那个质数。 样例输入 复制 21 样例输出 复制 7 提示 1 ≤ 𝑛 ≤ 2 × 10 9 来源/分类

```python import math def largest_prime_factor(n): # 从2开始寻找最小的质因数 for i in range(2, int(math.isqrt(n)) + 1): if n % i == 0: # i是较小的质因数,n//i是较大的质因数 return n // i return n # n本身就是质数 if __name__ == "__main__": n = int(input()) print(largest_prime_factor(n)) ``` 代码说明: 1. 题目保证n是两个不同质数的乘积,因此n必然有且仅有两个质因数 2. 从2开始寻找最小的质因数i,则n//i就是较大的质因数 3. 使用math.isqrt(n)优化循环范围,只需检查到√n即可 4. 时间复杂度为O(√n),在n≤2×10⁹时完全可行 运行示例: 输入:21 输出:7 (因为21=3×7,较大质因数为7) [2026-01-11 17:47:30 | AI问答 | 222点数解答]

相关提问
发财导航,免费问AI
实用工具查看更多