题目:
分析:
方法一:暴力枚举,第一想法竟然还是暴力枚举两个,看来自己的暴力思维还是太差,应该枚举一个,然后看看另一个是否是平方数。
#include<bits/stdc++.h>
using namespace std
;
int main()
{
int c
;
for(int i
=0;i
*i
<c
;i
++)
{
int b
=c
-i
*i
;
int b2
=(int)sqrt(b
);
if(b2
*b2
==b
) return 1;
}
return 0;
}
方法二:学习一下费马平方和定理:
费马平方和定理:
详细解释一下:反正我刚开始看的很蒙蔽。
根据唯一分解定义,一个数可以分成多个质数的乘积,
这些质数(ai)如果%4==3的话,那么对应的mi必须是偶数,
必须是所有的, 然后才能表示成两个数的平方的和。
转载请注明原文地址:https://blackberry.8miu.com/read-28988.html