leetcode 633. 平方数之和 中等

给定一个非负整数 c ,你要判断是否存在两个整数 a 和 b,使得 a*a+b*b=c 。

示例 1:

输入:c = 5
输出:true
解释:1 * 1 + 2 * 2 = 5

示例 2:

输入:c = 3
输出:false

提示:

  • 0\leq C\leq 2^{31}-1

 分析:易知a和b的最大值为\sqrt{C},因此可以枚举a的值,在计算是否存在一个满足条件的整数b

bool judgeSquareSum(int c) {for(long long a=0;a*a<=c;++a){double b=sqrt(c-a*a);if(b==(int)b)return true;}return false;
}

或者可以用双指针的方法改进上面这个代码。

bool judgeSquareSum(int c) {long long a,b,n=c;a=0,b=sqrt(c);while(a<=b){if(a*a+b*b==c)return true;else if(a*a+b*b>c)b--;else a++;}return false;
}

最后是官方题解给出的数学方法。

费马平方和定理告诉我们:

一个非负整数 c 如果能够表示为两个整数的平方和,当且仅当 c 的所有形如 4k+3 的质因子的幂均为偶数。

证明请见 https://wstein.org/edu/124/lectures/lecture21/lecture21/node2.html

因此我们需要对 c 进行质因数分解,再判断所有形如 4k+3 的质因子的幂是否均为偶数即可。

作者:力扣官方题解
链接:https://leetcode.cn/problems/sum-of-square-numbers/solutions/747079/ping-fang-shu-zhi-he-by-leetcode-solutio-8ydl/
来源:力扣(LeetCode)

题解代码:

bool judgeSquareSum(int c) {for (int base = 2; base * base <= c; base++) {// 如果不是因子,枚举下一个if (c % base != 0) {continue;}// 计算 base 的幂int exp = 0;while (c % base == 0) {c /= base;exp++;}// 根据 Sum of two squares theorem 验证if (base % 4 == 3 && exp % 2 != 0) {return false;}}// 例如 11 这样的用例,由于上面的 for 循环里 base * base <= c ,base == 11 的时候不会进入循环体// 因此在退出循环以后需要再做一次判断return c % 4 != 3;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/59661.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一、文心一言问答系统为什么要分对话,是否回学习上下文?二、文心一言是知识检索还是大模型检索?三、文心一言的词向量、词语种类及多头数量

目录 一、文心一言问答系统为什么要分对话,是否回学习上下文? 二、文心一言是知识检索还是大模型检索? 三、文心一言的词向量、词语种类及多头数量 一、文心一言问答系统为什么要分对话,是否回学习上下文? 文心一言问答系统分对话的原因在于其设计初衷就是提供一个交互…

Qt第三课 ----------容器类控件

作者前言 &#x1f382; ✨✨✨✨✨✨&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f382; ​&#x1f382; 作者介绍&#xff1a; &#x1f382;&#x1f382; &#x1f382; &#x1f389;&#x1f389;&#x1f389…

nacos注册中心简介

当前现状与需求 随着微服务架构的普及&#xff0c;服务之间的通信和管理变得越来越复杂。传统的服务发现和配置管理方式已经无法满足现代应用的需求。在这种背景下&#xff0c;Nacos 应运而生&#xff0c;成为了一个强大的服务发现和配置管理工具。 1. 当前现状 服务发现&#…

Oracle Sql查询和性能优化(持续更新)

目录 索引优化 查询重写 EXISTS vs. IN 避免全表扫描 合理使用UNION操作符 优化子查询 执行计划分析 表设计优化 规范化与反规范化 分区表 存储参数调整 SGA配置 共享池 数据缓冲区 SGA自动管理 PGA配置 RAID配置 日志文件优化 性能诊断工具 AWR ASH 定期…

Java的基本语法

Java的基本语法是编写Java程序时必须遵循的规则和结构。以下是一些Java基本语法的关键点&#xff1a; 命名规范 在Java编程中&#xff0c;遵循一定的命名规范是非常重要的&#xff0c;它有助于代码的可读性和维护性&#xff0c;可参考&#xff08;https://blog.csdn.net/hwh2…

运放进阶篇-多种波形可调信号发生器-产生方波-三角波-正弦波

引言&#xff1a;前几节我们已经说到硬件相关基础的电路&#xff0c;以及对于运放也讲到了初步的理解&#xff0c;特别是比较器的部分&#xff0c;但是放大器的部分我们对此并没有阐述&#xff0c;在这里通过实例进行理论结合实践的学习。而运放真正的核心&#xff0c;其实就是…

蓝桥杯c++算法学习【1】之枚举与模拟(卡片、回文日期、赢球票:::非常典型的比刷例题!!!)

别忘了请点个赞收藏关注支持一下博主喵&#xff01;&#xff01;&#xff01; 关注博主&#xff0c;更多蓝桥杯nice题目静待更新:) 枚举与模拟 一、卡片&#xff1a; 【问题描述】 …

使用Netty实现一个简单的聊天服务器

✅作者简介&#xff1a;热爱Java后端开发的一名学习者&#xff0c;大家可以跟我一起讨论各种问题喔。 &#x1f34e;个人主页&#xff1a;Hhzzy99 &#x1f34a;个人信条&#xff1a;坚持就是胜利&#xff01; &#x1f49e;当前专栏&#xff1a;Netty &#x1f96d;本文内容&a…

用discuz开发一款网站自动秒收录源码功能更强悍更安全

用discuz开发一款网站自动秒收录源码功能更强悍更安全 在当今数字化时代&#xff0c;网站的曝光率和访问量是衡量其成功与否的重要指标。为了提升网站的曝光率&#xff0c;自动秒收录技术应运而生。而Discuz平台作为知名的社区管理系统&#xff0c;为开发者提供了丰富的功能和…

绿色能源发展关键:优化风电运维体系

根据QYResearch调研团队最新发布的《全球风电运维市场报告2023-2029》显示&#xff0c;预计到2029年&#xff0c;全球风电运维市场的规模将攀升至307.8亿美元&#xff0c;并且在接下来的几年里&#xff0c;其年复合增长率&#xff08;CAGR&#xff09;将达到12.5%。 上述图表及…

ER图的规范画法

ER图相较其他结构化分析方法和面向对象分析方法的图结构来说&#xff0c;还是相对容易不少&#xff0c;不过各位也要注重细节的严谨性。 entity&#xff0c;实体&#xff1b;relationship&#xff0c;关系&#xff1b;相信各位的英语水平不难理解ER图的功能&#xff0c;椭圆代表…

linux 下 signal() 函数的用法,信号类型在哪里定义的?

--------------------------------------------------- author: hjjdebug date: 2024年 11月 07日 星期四 14:47:33 CST description: linux 下 signal() 函数的用法 --------------------------------------------------- signal 是linux 下最基础的进程通讯机制…

【静态页面】尚品汇 1、设计稿分析及资源准备

目录 1. 准备工作2. 理解设计3. 规划项目结构 1. 准备工作 安装必要的工具&#xff1a;确保你的开发环境已经准备好&#xff0c;包括文本编辑器&#xff08;如 VSCode&#xff09;、浏览器等。获取设计文件&#xff1a;获取UI设计稿或者设计文件链接&#xff0c;并确保可以访问…

基于MPPT最大功率跟踪的光伏发电蓄电池控制系统simulink建模与仿真

目录 1.课题概述 2.系统仿真结果 3.核心程序与模型 4.系统原理简介 5.完整工程文件 1.课题概述 基于MPPT最大功率跟踪的光伏发电蓄电池控制系统simulink建模与仿真。本系统包括PV模块&#xff0c;电池模块&#xff0c;电池控制器模块&#xff0c;MPPT模块&#xff0c;PWM模…

nginx代理 proxy_pass

一、location 包含 location /api/ {proxy_pass http://127.0.0.1:85;} 二、location 不包含 location /api/ {proxy_pass http://127.0.0.1:85/;} 三、locaion 包含 location /api {proxy_pass http://127.0.0.1:85;}四、location 包含 location /api {proxy_pass http://127.…

MongoDB笔记01-概念与安装

文章目录 前言一、MongoDB相关概念1.1 业务应用场景具体的应用场景什么时候选择MongoDB 1.2 MongoDB简介1.3 体系结构1.4 数据模型1.5 MongoDB的特点 二、本地单机部署2.1 Windows系统中的安装启动第一步&#xff1a;下载安装包第二步&#xff1a;解压安装启动1.命令行参数方式…

IMS高压发生器维修高压电源维修XRG100/1000

IMS高压发生器的硬件组成&#xff1a; 高压控制发生器主要由高压发生器和高压控制器两部分组成。高压控制器是控制调节X射线管管电压和管电流的机构,高压发生器是管电压和管电流产生的执行机构,通过高压控制器对高压发生器进行控制调节,通过高压电缆将高压发生器与X射线管连接…

133.鸿蒙基础01

鸿蒙基础 1.自定义构建函数1. 构建函数-[Builder ](/Builder )2. 构建函数-传参传递(单向)3. 构建函数-传递参数(双向)4. 构建函数-传递参数练习5. 构建函数-[BuilderParam ](/BuilderParam ) 传递UI 2.组件状态共享1. 状态共享-父子单向2. 状态共享-父子双向3. 状态共享-后代组…

MybatisPlus入门(八)MybatisPlus-DQL编程控制

一、字段映射与表名映射 数据库表和实体类名称一样自动关联&#xff0c;数据库表和实体类有部分情况不一样。 问题一&#xff1a;表名与编码开发设计不同步&#xff0c;表名和实体类名称不一致。 解决办法&#xff1a; 在模型类上方&#xff0c;使用TableName注解&#xf…

React Native的生命周期

React Native 组件的生命周期分为三个阶段&#xff1a;Mounting&#xff08;挂载&#xff09;、Updating&#xff08;更新&#xff09; 和 Unmounting&#xff08;卸载&#xff09;。每个阶段都会触发不同的生命周期方法。 下面是详细的生命周期解释&#xff0c;并通过一个项目…