时间限制: 1000 ms 内存限制: 65536 KB
【题目描述】
已知正整数n是两个不同的质数的乘积,试求出较大的那个质数。
【输入】
输入只有一行,包含一个正整数 n。
对于60%的数据,6≤n≤1000。
对于100%的数据,6≤n≤2×10^9。
【输出】
输出只有一行,包含一个正整数 p�,即较大的那个质数。
【输入样例】
21
【输出样例】
7
【知识点】—— 找素数(质数)的方法
根号法
算法原理:
一个自然数N总能写成2个数相乘,即
N = a*b,其中假设a<b,则a<根号N, b>根号N,
从2至根号N的数都不能被整除,即N是素数(质数)。
Eratosthenes筛选法
算法原理:
- 先用2筛选,即把2留下,把2的倍数剔除掉;
- 再用下一个素数,也就是3筛,把3留下,3的倍数全部剔除掉;
- 接下去用下一个素数5筛,把5留下,5的倍数全部剔除掉;
- 不断重复下去......
Euler筛选法
算法原理:
给定正整数n是两个不同质数的乘积,该博客介绍了如何找到较大的那个质数。讲解了找素数的方法,包括根号法、Eratosthenes筛选法和Euler筛选法,并提供了具体的算法原理。最后提到这道题目考察了质数的快速查找和循环的运用。
订阅专栏 解锁全文
194

被折叠的 条评论
为什么被折叠?



