每种高级语言几乎都会和数学打上交道,比如初期的实现1-100的素数,考研学者的数学和思维逻辑能力,到计算九皇宫的算法实现,这篇就写几个关于数学的python实现

1.斐波那契数列

# 斐波那契数列
sum = 0
num = 1
i = 0
while i < 10:nth = sum + numprint(nth, end=" , ")# 更新值sum = numnum = nthi+= 1结果:
1 , 2 , 3 , 5 , 8 , 13 , 21 , 34 , 55 , 89
斐波那契数列意思第一个数加上第二个数=第三个数,以此类推

2.阿姆斯特朗数

# 如果一个n位正整数等于其各位数字的n次方之和,则称该数为阿姆斯特朗数。 例如1^3 + 5^3 + 3^3 = 153。
# 1000以内的阿姆斯特朗数: 1, 2, 3, 4, 5, 6, 7, 8, 9, 153, 370, 371, 407。
sum = int(input("输入一个数"))
sumlen = len(str(sum))
sumNum = 0
for i in str(sum):sumNum +=int(i) ** sumlen
if sum == sumNum:print("这个数的阿姆斯特郎数")
else:print("不是阿姆斯特郎数")sums = int(input("请输入要查找到多少的阿姆斯特郎数"))
sum = 0
while True:num = 0n = len(str(sum))for i in str(sum):num += int(i)**nif sum == num:print("%d\t这是个阿姆斯特朗数"%sum)if sum >sums:breaksum +=1

3.笛卡尔积

from itertools import product
for x,y,z,c in product(['a','b','c'],['d','e','f'],['m','n','a'],[2,3,1,4]):print(x,y,z,c)

意思为算出给定列表中全部可能的位数组合,这个答案的百度百科的,如果使用java编写笛卡尔积需要30-50行代码,python已经封装好了produch函数,使用for循环便可便利全部的笛卡尔积数

4.卡普雷卡

小编是在图书馆看到一本书上写的卡普雷卡数,当时觉得好玩,就拍了下来,星期一就想用python试一下实现

卡普尔卡数就是24502500一个位数为偶数的罗马数对半分开,(2450+2500)^ 2 == 24502500,下面是小编百度找到的解释:

传说数学家 卡普雷卡 (Kaprekar)偶然发现铁路旁的里程碑“3025”被雷击得一分为二:30与25.他敏锐地注意到:30+25=55,55^2=3025。 
现称这样具有分段和平特性的整数为卡普雷卡数。 
先探讨搜索4位卡普雷卡数的基础上引申至一般偶数位卡普雷卡数,并进一步拓广到2段和平方数。

下面是一个简单的找四位数中卡普雷卡数函数:

def Kaprekar1():for i in range(1000, 10000):a = int(str(i)[:2])b = int(str(i)[2:])c = (a + b) ** 2if i == c:print("(%d + %d) ** 2 == %d;" % (a, b, c))
Kaprekar1()结果:
(20 + 25) ** 2 == 2025;
(30 + 25) ** 2 == 3025;
(98 + 1) ** 2 == 9801;

得到给定位数的卡普雷卡数:

def Kaprekar2(len):if len % 2 == 0:len1 = 10 ** (len - 1)len2 = 10 ** lenfor i in range(len1, len2):lens = int(len / 2)a = int(str(i)[:lens])b = int(str(i)[lens:])c = (a + b) ** 2if i == c:print("(%d + %d) ** 2 == %d;" % (a, b, c))else:print("请输入偶数:")
Kaprekar2(2)结果:
(2450 + 2500) ** 2 == 24502500;
(2550 + 2500) ** 2 == 25502500;
(5288 + 1984) ** 2 == 52881984;
(6048 + 1729) ** 2 == 60481729;
(9998 + 1) ** 2 == 99980001;#000省略了

那么除了偶数外还有奇数分段,如 88209 = (88+209)^ 2,如果这个数为5位,第一位2个,第二位3个

def Kaprekar3(len):len1 = 10 ** (len - 1)len2 = 10 ** lenfor i in range(len1, len2):lens = int(len // 2)a = int(str(i)[:lens])b = int(str(i)[lens:])c = (a + b) ** 2if i == c:print("(%d + %d) ** 2 == %d;" % (a, b, c))
Kaprekar3(7)结果:
(494 + 1729) ** 2 == 4941729;
(744 + 1984) ** 2 == 7441984;

5,百钱百鸡

这个是中国古代的一个经典的数学题,就是说,有一百铜币,买一百只鸡,其中公鸡5铜币一只,母鸡3铜币一只,小鸡一铜币三只,

要求每种鸡必须购买一只,求出一共有几种买法

答案如下:大家不如先自己做一下再看答案呢

x = 1
y = 1for i in range(1,21):for j in range(1,34):z = 100 - (x+y)if (z %3 == 0) and (x * 5 + y *3 +z/3 ==100):print('%s公鸡 , %s母鸡 , %s小鸡 '%(x,y,z))y +=1y =1x+=1

6,猴子吃桃问题

# 猴子有一天摘了很多桃子,第一天吃了一半觉得不够就又多吃了一个,第二天也是,一直到第十天,发现就剩一个了

问猴子第一天摘了多少桃子

x2 = 1
for i in range(9):x1 = (x2 + 1) * 2x2 = x1
print x2

7,约瑟夫生者死者小游戏
# 30 个人在一条船上,超载,需要 15 人下船。
# 于是人们排成一队,排队的位置即为他们的编号。
# 报数,从 1 开始,数到 9 的人下船。
# 如此循环,直到船上仅剩 15 人为止,问都有哪些编号的人下船了呢?
以下是菜鸟教程的做法

people = {}
for x in range(1, 31):
    people[x] = 1
print(people)
check = 0
i = 1
j = 0
while i <= 31:
    if i == 31:
        i = 1
    elif j == 15:
        break
    else:
        if people[i] == 0:
            i += 1
            continue
        else:
            check += 1
            if check == 9:
                people[i] = 0
                check = 0
                print("{}号下船了".format(i))
                j += 1
            else:
                i += 1
                continue

python数学篇(经典算法题)相关推荐

  1. python全排序算法题_Python的100道经典算法题(1)

    按照c语言的100道经典算法题,自己原创写的,就得是自己的练习题了 [程序1] 题目:有1.2.3.4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? 程序分析:可填在百位.十位.个位的数 ...

  2. 经典算法题每日演练——第二十二题 奇偶排序

    原文:经典算法题每日演练--第二十二题 奇偶排序 这个专题因为各种原因好久没有继续下去了,MM吧...你懂的,嘿嘿,不过还得继续写下去,好长时间不写,有些东西有点生疏了, 这篇就从简单一点的一个&qu ...

  3. 经典算法题每日演练——第十九题 双端队列

    经典算法题每日演练--第十九题 双端队列 原文:经典算法题每日演练--第十九题 双端队列 话说大学的时候老师说妹子比工作重要~,工作可以再换,妹子这个...所以...这两个月也就一直忙着Fall in ...

  4. 经典算法题每日演练——第一题 百钱买百鸡

    经典算法题每日演练--第一题 百钱买百鸡 原文:经典算法题每日演练--第一题 百钱买百鸡 百钱买百鸡的问题算是一套非常经典的不定方程的问题,题目很简单:公鸡5文钱一只,母鸡3文钱一只,小鸡3只一文钱, ...

  5. 每日经典算法题(十三) 逆推算法(平方根相关)

    每日经典算法题(十三) 逆推算法(平方根相关) 平方根:Square Root 题目 有一个整数,它加上 100 后是一个 完全平方数 ,再加上 168 又是一个 完全平方数 ,请问该数是多少? 程序 ...

  6. 【经典算法题】Pow(x, n)

    [经典算法题]Pow(x, n) Leetcode 0050 Pow(x, n) 题目描述:Leetcode 0050 Pow(x, n) 分析 本题的考点:快速幂. 关于快速幂的讲解可以参考:快速幂 ...

  7. 字节跳动经典算法题:给定一个数n如23121;给定一组数字a如[2 4 9]求由a中元素组成的小于n的最大数

    字节跳动经典算法题(提问次数最多) 题目描述:给定一个数n如23121:给定一组数字a,如[2 4 9]:求由a中元素组成的小于n的最大数. 思路分析:暴力分析手法 1. 判断该位的数值是否在数字a中 ...

  8. 【经典算法题】水壶问题

    [经典算法题]水壶问题 Leetcode 0365 水壶问题 题目描述:Leetcode 0365 水壶问题 分析 本题的考点:数学.欧几里得算法. 两个水壶记为A.B.A.B这两个水壶都是及不空也不 ...

  9. 经典算法题每日演练——第六题 协同推荐SlopeOne 算法

    原文:经典算法题每日演练--第六题 协同推荐SlopeOne 算法 相信大家对如下的Category都很熟悉,很多网站都有类似如下的功能,"商品推荐","猜你喜欢&quo ...

  10. 经典算法题每日演练——第十题 树状数组

    原文:经典算法题每日演练--第十题 树状数组 有一种数据结构是神奇的,神秘的,它展现了位运算与数组结合的神奇魅力,太牛逼的,它就是树状数组,这种数据结构不是神人是发现不了的. 一:概序 假如我现在有个 ...

最新文章

  1. 【个人成长学习讨论小组】练习2:角色
  2. html_javascript
  3. mvc html.display,Asp.Net MVC中的Html.DisplayFor()用于项目列表
  4. word2vec应用场景_word2vec的使用参数解释和应用场景
  5. 简述python定义中的五个要点_Python基础知识复习
  6. GitHub 一周热点速览:前后端最佳实践
  7. android8.0以上新增Camera(七)
  8. CocurrentHashMap和Hashtable的区别
  9. matlab pi控制编程,增量式PI控制算法的MATLAB仿真.doc
  10. ABAP 语法备忘 刘欣
  11. 三消游戏算法图文详解
  12. 基于web的医院预约挂号系统-java ssm springboot
  13. Kesci:Tensorflow 实现 LSTM——时间序列预测(超详细)
  14. html hide特效,jQuery / 动画与特效中的显示show和隐藏hide - 汇智网
  15. hdwiki can not connect to mysql_HDWIKI最新版Update注入可修改管理员密码(MYSQL进制技巧)...
  16. Unity TileMap 存档 保存地图
  17. 如何解决Windows10启动QQ时报错无法访问个人文件夹?
  18. OCA,OCP,OCM傻傻分不清?
  19. 电路模型和电路定律(Ⅰ)
  20. win10 2016长期服务版激活

热门文章

  1. 石头科技财报背后:不甘再当小米打工仔?
  2. EXCEL使用vlookup函数合并多个工作表
  3. 异速联服务器虚拟打印怎么设置,金万维异速联6.2.2.0虚拟打印步骤.doc
  4. Java 读取p12 证书私钥
  5. 一图看懂经典面试题——左外连接,右外连接,内连接的区别
  6. 自学Shiro框架笔记
  7. springboot框架(2):整合junit4
  8. NXP RT1062 flashloader下载程序到RAM执行
  9. 百度网盘错误消息状态码大全
  10. kb2999226此更新不适用你的计算机,Windows Server 2012 R2 安装补丁KB2999226提示此更新不适合用于计算机...