本文大约 1600 字,阅读大约需要 8分钟

练习题 3 的网址:

http://www.runoob.com/python/python-exercise-example3.html


Example-3 完全平方数

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

思路

首先我们可以假设这个整数是x,那么根据题目有:

x+100 = m**2 (1)
x+100+168 = n**2 (2)

m, n都是正整数,接着就是先根据求解一元二次方程组的做法,可以得到

n**2 - n**2 = 168 (3)

利用平方差分解上式,有(n-m)(n+m)=168,这个时候,我们再做一个变换:

m + n = i (4)
n - m = j (5)
i * j = 168 (6)

这个变换,其实只是再设置两个变量i,j,并且根据它们两者相乘是 168,这是一个偶数,由于两个数相乘是偶数,有两种情况,两者都是偶数,或者一个偶数和一个奇数,然后再求解(4)和(5),有:

n = (i + j) / 2 (7)
m = (i - j) / 2 (8)

根据(7)式子,i+j必须是偶数,这样才可以被 2 整除,得到正整数n,这种情况下,结合(4)和(5),可以推导得到i,j都是大于等于 2 的偶数,又根据(6),可以推导到i,j的范围是:

1 < j < i < 85

这里是假设了i > j的情况,因为不存在一个偶数的平方就是168,所以假设i>j

代码实现

第一种实现:

def perfect_square():for i in range(1, 85):if 168 % i == 0:j = 168 / i;if i > j and (i + j) % 2 == 0 and (i - j) % 2 == 0:m = (i + j) / 2n = (i - j) / 2x = n * n - 100print(x)

第二种实现是网上大神的解法,参考文章:

  • Python练习题 003:完全平方数
  • ZH奶酪:编程语言入门经典100例【Python版】

这种实现其实就是在分析过程中,只推导到m,n部分,即(3)式的部分,然后直接根据这个公式和范围来求解,这个时候m,n的范围就是(1,169)

这是一个应用列表推导式的解法:

def perfect_square2():'''列表推导式:return:'''[print(m**2-100, end=',') for m in range(1, 169) for n in range(1, 169) if (n**2 - m**2) == 168]def perfect_square2_loop():'''for 循环形式:return:'''for m in range(1, 169):for n in range(1, 169):if (n ** 2 - m ** 2) == 168:print(m ** 2 - 100, end=',')

输出结果都是:

-99,21,261,1581,

源代码在:

https://github.com/ccc013/CodesNotes/blob/master/Python_100_examples/example3.py

或者点击原文,也可以查看源代码。


欢迎关注我的微信公众号–机器学习与计算机视觉,或者扫描下方的二维码,大家一起交流,学习和进步!

往期精彩推荐

Python-100 练习系列
  • Python-100 | 练习题 01 & 列表推导式
  • Python-100 练习题 02
学习笔记
  • 机器学习入门系列(1)–机器学习概览
  • [GAN学习系列] 初识GAN
  • [GAN学习系列2] GAN的起源
  • [GAN学习系列3]采用深度学习和 TensorFlow 实现图片修复(上)
数学学习笔记
  • 程序员的数学笔记1–进制转换
  • 程序员的数学笔记2–余数
  • 程序员的数学笔记3–迭代法
Github项目 & 资源教程推荐
  • [Github 项目推荐] 一个更好阅读和查找论文的网站
  • [资源分享] TensorFlow 官方中文版教程来了
  • 必读的AI和深度学习博客
  • [教程]一份简单易懂的 TensorFlow 教程
  • [资源]推荐一些Python书籍和教程,入门和进阶的都有!

Python-100 练习题 03 完全平方数相关推荐

  1. 100道Python编程练习题

    100+ Python challenging programming exercise 100道Python编程练习题,这些题如果能坚持每天至少完成一道,一定可以帮大家轻松 get Python 的 ...

  2. python中输出n开始的5个奇数_送你99道Python经典练习题,练完直接上手做项目,免费送了来拿吧...

    学python没练习题怎么行.今天,给大家准备一个项目: 99道编程练习,这些题如果能坚持每天至少完成一道,一定可以帮大家轻松 get Python 的编程技能.目前,这个项目已经获得了 2924 S ...

  3. 求知讲堂python+人工智能 99天完整版 学完可就业+某某教程Python 100例————作业(持续更新)

    个人答案仅供参考,不喜勿喷. 求知讲堂python+人工智能 99天完整版 学完可就业 1.day1 1. import random index=1 error=0 age=random.randi ...

  4. 这些Python基础练习题你会几个?

    在人工智能大火的当今,Python 作为人工智能时代的首选语言已经越来越收到追捧:但是许多非科班.零基础的小伙伴常常苦于没有合适的入门 Python 的教程而感到苦恼:本人是一名资深Python开发, ...

  5. python字典练习题

    python字典练习题 写代码:有如下字典按照要求实现每一个功能dict = {"k1":"v1","k2":"v2", ...

  6. python进阶练习题:IRR计算 - 盈利能力的评价【难度:2级】--景越Python编程实例训练营,不同难度Python习题,适合自学Python的新手进阶

    python进阶练习题:IRR计算 - 盈利能力的评价[难度:2级]: <跨度风格="字体重量:粗体;颜色:金"> IRR </跨度>或内部收益率,是基于所 ...

  7. python基础练习题与期末复习总结

    本文是python入门练习题,为大家总结了python入门的最基础知识同时也是最常用的知识以及相应的题目,大家可以用于练习python,也适合用于python期末复习哦! 输出由任意字符串堆积的等腰三 ...

  8. python高级练习题:多米诺平铺 - 5×2N局【难度:4级】--景越Python编程实例训练营,不同难度Python习题,适合自学Python的新手进阶

    python高级练习题:多米诺平铺 - 5×2N局[难度:4级]: 请还检查了在[多米诺拼接系列]其他练习题(https://www.codewars.com/collections/5d19554d ...

  9. 【练习题】python列表练习题1

    [练习题]python列表练习题1 基础题 已知一个数字列表,打印列表中所有的奇数 nums = [11, 12, 13, 2, 76, 3, 4, 66, 77, 55, 33] for x in ...

最新文章

  1. Mono for Andriod学习与实践(1)— 初体验
  2. Android Studio 编译: Program type already present: XXX 解决方案
  3. Qt中的基础图形绘制
  4. mysql主从切换gtid不一致_解决mysql使用GTID主从复制错误问题
  5. Qt 中Treewidget添加右键菜单
  6. html制作苹果手机屏幕,iphone怎么录屏幕点击动作(苹果手机的屏幕录制步骤)...
  7. 【pytorch图像分类】ResNet网络结构
  8. ricequant量化交易文件如何保存和读取
  9. linux 下MySQL本地安装mysql - u root - p 无法登入
  10. linux系统制作qcow2,制作qcow2镜像
  11. php java 单点登录_用cas来实现php的单点登陆
  12. JAVA 利用ASCII码偏移(来自IDEA免费激活码游戏)
  13. JSP设置Excel表格换行_工作中常见的11个Excel难题,一次解决!
  14. 计算机机房建设标准.doc,计算机机房建设标准.doc
  15. 自学SQL网题库答案
  16. 光场相机1.0与光场相机2.0
  17. 乐观构思、悲观计划、乐观实行
  18. 论语.八佾之绘事后素
  19. 我们的23种设计模式(一)
  20. 用threading+turtle画哆啦A梦,同时播放背景音乐

热门文章

  1. php mysql 排名算法_MySQL PHP:优化排名查询和计数子查询
  2. Linux网站访问的电脑占CPU,详解Linux如何查看当前占用CPU或内存最多的几个进程...
  3. C++ 高级篇(三)—— 出错处理
  4. vscode tab键快捷生成元素html标签
  5. Taro+react开发(18)--定义变量值
  6. 前端学习(3219):...扩展
  7. 前端学习(3082):vue+element今日头条管理-页面布局
  8. 前端学习(3026):vue+element今日头条管理-让导航栏和路由对应起来
  9. 前端学习(3021):vue+element今日头条管理--创建组件和配置路由
  10. 前端学习(2984):一文理解数据劫持2