费马二平方和定理

费马二平方定理是指除了2这个特殊的素数,所有的素数都可以分两类:被4除余1的素数,如5,13,17,29,37,41;第二类则是被4除余3的素数如3,7,11,19,23,31.第一类素数都能表示为两个整数的平方和,第二类都不能。

                                                                              ———摘自百度

即,任何一个模4余1的素数可被表示成两个自然数的平方之和并且表示方法唯一。举个栗子:
一个素数 C = AA + BB,A,B皆为素数的时候,则 C就是费马平方素数。

用费马平方和定理解决 lc633 : 给定一个非负整数 c ,你要判断是否存在两个整数 a 和 b,使得 a2 + b2 = c 。
切入点: 等式成立的充要条件为c的一切形如4k+3的质因子的幂次均为偶数.

class Solution {
    //费马平方和
    public boolean judgeSquareSum(int c) {
        for(int i = 2, cnt = 0; i * i <=c; i++, cnt = 0){
            while(c % i == 0 && ++cnt > 0) c /= i;
            if(i % 4 == 3 && cnt % 2 != 0)return false;
        }
        return c % 4 != 3;
    }
}

原题解

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值