根据定义,一个正整数 x 是镜像数,当且仅当存在正整数 d 使得 d×d=x,即 x 是完全平方数。
因此,问题转化为求区间 [l,r] 内完全平方数的个数。
设:
小智在学习数论时,对一类特殊的正整数产生了兴趣。他定义:如果一个正整数 x 的正约数个数是奇数,就把 x 称为“奇异数”。
现在给定一个区间 [L,R],请你帮小智计算该区间内有多少个奇异数。
输入的范围满足 1≤L≤R≤109。
第一行包含两个整数 L 和 R,表示查询区间的左端点和右端点。
输出一个整数,表示区间 [L,R] 内奇异数的个数。
输入
4 10
输出
2
说明
区间 [4,10] 内的整数有 4、5、6、7、8、9、10。
其中约数个数为奇数的“奇异数”恰好是完全平方数:4(约数 1, 2, 4,共 3 个)和 9(约数 1, 3, 9,共 3 个)。
其余数的约数个数均为偶数,例如 6 的约数为 1, 2, 3, 6(共 4 个)。
因此区间 [4,10] 内的奇异数个数为 2。
输入
16 16
输出
1
说明
区间 [16,16] 只包含一个数 16。
16 是完全平方数(16=42),其约数为 1, 2, 4, 8, 16,共有 5 个(奇数),因此 16 是奇异数。
该区间奇异数个数为 1。
输入
2 3
输出
0
说明
区间 [2,3] 包含 2 和 3。
2 的约数为 1, 2(共 2 个,偶数);3 的约数为 1, 3(共 2 个,偶数)。两者都不是完全平方数,因此都不是奇异数。
该区间内奇异数个数为 0。
输入
1 100
输出
10
说明
区间 [1,100] 内的完全平方数即为从 12 到 102 的数:1, 4, 9, 16, 25, 36, 49, 64, 81, 100,共 10 个。
所有这些数的正约数个数均为奇数,因此区间 [1,100] 内的奇异数个数为 10。
Scan the QR code below with WeChat to sign in
First-time scan will create your account automatically
请使用微信扫描下方二维码完成注册