当前位置: 首页 > news >正文

Python世界:求解满足某完全平方关系的整数实践

Python世界:求解满足某完全平方关系的整数实践

    • 任务背景
    • 实现思路
    • 参考资料

任务背景

本问题来自于菜鸟教程Python 100例中的例3:

一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?

实现思路

本文较原问题无改进,仅做实现验证,以助个人理解。

问题分析

假设该整数为x,依据题意可转化为以下公式:
x + 100 = n 2 ( 1 ) x + 100 + 168 = m 2 ( 2 ) x + 100 = n^2 \ \ (1)\\ x + 100 + 168 = m^2 \ \ (2)\\ x+100=n2  (1)x+100+168=m2  (2)

由公式1和2,可推导并转化为以下公式:

( m − n ) ( m + n ) = 168 ( 3 ) i ∗ j = 168 ( 4 ) m = ( i + j ) / 2 ( 5 ) n = ( − i + j ) / 2 ( 6 ) (m - n)(m + n) = 168 \ \ (3)\\ i*j = 168 \ \ (4)\\ m = (i + j) / 2 \ \ (5)\\ n = (-i + j) / 2 \ \ (6)\\ (mn)(m+n)=168  (3)ij=168  (4)m=(i+j)/2  (5)n=(i+j)/2  (6)

以上推导,目的是为了将数学问题转化为计算机可求解的问题,核心看公式4,时刻注意前提x, m, n, i, j均为整数。

从公式1-2,易知:

  • m, n正负不影响x的结果

从公式3-6,易知:

  • i, j必须均为偶数,且两者同正同负
  • i, j其中最小至少为2
  • i, j其中最大至多为168/2

由此可知,问题简化为i, j均为正整数,i, j遍历区间为[2, 168/2],寻找满足公式4-6的i, j,然后反求x。

参考代码

# -*- coding: utf-8 -*-
"""
功能:求例3的x值
1、初步分析限定范围
2、限定整数范围内遍历求解
"""def find_x():x = []# i, j is evenupper_bound = 168 // 2 + 1 # 加1目的是因为range左开右闭for i in range(2, upper_bound, 2):j = 168 // i # `//` 实现整数除法if j % 2 == 0:is_even = Trueelse:is_even = Falseif i < j and i * j == 168 and is_even: # i, j地位等价,i>j时只是位置交换,x结果不变,故没必要遍历res = int(((i + j) / 2) ** 2 - 268)x.append(res)return xif __name__ == '__main__':print('start!')# 正式运行x = find_x()print(x)# 正式退出main函数进程,以免main函数空跑print('done!')

参考资料

  1. python的两种除法/和//,得到的数是整型还是浮点型?
  2. 菜鸟教程Python 练习实例3

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Java内存模型详解
  • httprunner学习笔记(自用版)
  • LabVIEW步进电机控制方式
  • 云计算实训41——部署project_exam_system项目(续)
  • Nuxt3入门:过渡效果(第5节)
  • MacOS升级ruby版本
  • 《悉达多》观后笔记
  • 《数据结构(C语言版)第二版》第七章-查找(7.3.3-7.4)
  • 进程间通信-进程池
  • 【Qt】Qt与Html网页进行数据交互
  • Matlab simulink建模与仿真 第七章(表查询库)
  • 【C++多线程编程】 线程安全与对象生命周期管理
  • ffmpeg的安装和使用教程
  • [数据集][目标检测]人脸口罩佩戴目标检测数据集VOC+YOLO格式8068张3类别
  • 【C++ 宏定义 使用】
  • CentOS 7 修改主机名
  • create-react-app项目添加less配置
  • el-input获取焦点 input输入框为空时高亮 el-input值非法时
  • Java 实战开发之spring、logback配置及chrome开发神器(六)
  • leetcode388. Longest Absolute File Path
  • Rancher如何对接Ceph-RBD块存储
  • SpriteKit 技巧之添加背景图片
  • 翻译:Hystrix - How To Use
  • 解析 Webpack中import、require、按需加载的执行过程
  • 开源中国专访:Chameleon原理首发,其它跨多端统一框架都是假的?
  • 前端攻城师
  • 如何在GitHub上创建个人博客
  • 数据科学 第 3 章 11 字符串处理
  • 双管齐下,VMware的容器新战略
  • ​ 轻量应用服务器:亚马逊云科技打造全球领先的云计算解决方案
  • ​2021半年盘点,不想你错过的重磅新书
  • #define用法
  • #Linux(make工具和makefile文件以及makefile语法)
  • (Arcgis)Python编程批量将HDF5文件转换为TIFF格式并应用地理转换和投影信息
  • (html5)在移动端input输入搜索项后 输入法下面为什么不想百度那样出现前往? 而我的出现的是换行...
  • (pojstep1.3.1)1017(构造法模拟)
  • (论文阅读23/100)Hierarchical Convolutional Features for Visual Tracking
  • (三)Kafka 监控之 Streams 监控(Streams Monitoring)和其他
  • (一)Thymeleaf用法——Thymeleaf简介
  • (原创) cocos2dx使用Curl连接网络(客户端)
  • (原創) 如何優化ThinkPad X61開機速度? (NB) (ThinkPad) (X61) (OS) (Windows)
  • (转)ORM
  • (转载)PyTorch代码规范最佳实践和样式指南
  • *ST京蓝入股力合节能 着力绿色智慧城市服务
  • .net core使用RPC方式进行高效的HTTP服务访问
  • .NET 解决重复提交问题
  • .net 生成二级域名
  • .NET开源、简单、实用的数据库文档生成工具
  • .NET设计模式(8):适配器模式(Adapter Pattern)
  • /boot 内存空间不够
  • /etc/fstab和/etc/mtab的区别
  • /usr/bin/perl:bad interpreter:No such file or directory 的解决办法
  • /var/log/cvslog 太大
  • @GetMapping和@RequestMapping的区别
  • [ SNOI 2013 ] Quare