leetcode:633. 平方数之和(数学,中等,费马定理)

    科技2024-01-06  95

    题目:

    分析:

    方法一:暴力枚举,第一想法竟然还是暴力枚举两个,看来自己的暴力思维还是太差,应该枚举一个,然后看看另一个是否是平方数。

    #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必须是偶数,

    必须是所有的, 然后才能表示成两个数的平方的和。

    Processed: 0.013, SQL: 8