原帖地址:http://blog.leanote.com/post/dawnmagnet/633
题目
思路分析
这个就是一个非常简单的枚举。。。。其实也不需要什么思路的,大家会问,可能会有更简单的办法吗?我觉得很难,毕竟这道题究其核心是一个质因数分解的题目,而质因数分解目前都是数学上的一座坚不可摧的大坝,只要有人推翻了(还是别有的好),那么整个互联网体系的密码学都是建立在以之为基础的加密算法上的,那么整个互联网也将崩塌。。。。。。。。所以我们回到这个题目,就模拟呗。注意一下模拟的上限就到 c \sqrt{c} c 就可以了
C++代码
class Solution {
public:
bool judgeSquareSum(int c) {
for (long a = 0; a * a <= c; a++) {
double b = sqrt(c - a * a);
if (b == (int)b) {
return true;
}
}
return false;
}
};
Rust代码
impl Solution {
pub fn judge_square_sum(c: i32) -> bool {
let n = (c as f64).sqrt() as i32;
for a in 0..=n {
let b = ((c - a * a) as f64).sqrt();
if b == b.floor() {
return true;
}
}
false
}
}