题目链接
题目类型:数论
题目来源:BestCoder #85
题目分析
题目大意
给出一个n,找出离n最近的一个数x,使x是若干个质数平方的乘积,求abs(x-n)
解析
由于x为若干个质数平方的乘积,那么x必然为平方数,所以我们就可以直接找sqrt(n)附近,唯一分解定理所分解出来的各质因数指数为1的数。很容易想到打素数表,然后枚举所有大于sqrt(n)和小于sqrt(n)的数,找到第一个符合条件的即可。因为1e5内的素数还是比较少的,所以这个做法并不会太慢。
代码
1 |
|
Pursue excellence; Strive for perfection.
题目类型:数论
题目来源:BestCoder #85
给出一个n,找出离n最近的一个数x,使x是若干个质数平方的乘积,求abs(x-n)
由于x为若干个质数平方的乘积,那么x必然为平方数,所以我们就可以直接找sqrt(n)附近,唯一分解定理所分解出来的各质因数指数为1的数。很容易想到打素数表,然后枚举所有大于sqrt(n)和小于sqrt(n)的数,找到第一个符合条件的即可。因为1e5内的素数还是比较少的,所以这个做法并不会太慢。
1 | #include <set> |