百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术资源 > 正文

9个可以用Python快速解答的有趣数学题目

off999 2024-12-11 16:25 22 浏览 0 评论

今天用Python讲数学题


题一

有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?

解题思路:先组成所有的排列,再筛选出满足要求的数。

程序源代码:

arr=[]
for i in range(1, 5):
    for j in range(1, 5):
        for k in range(1, 5):
            if (i != k) and (i != j) and (j != k):
                s=i*100+j*10+k
                arr.append(s)
print(arr)
print(len(arr))

运行结果为:

[123, 124, 132, 134, 142, 143, 213, 214, 231, 234, 241, 243, 312, 314, 321, 324, 341, 342, 412, 413, 421, 423, 431, 432]
24


题二

一个整数,它加上100和加上268后都是一个完全平方数,请问该数是多少?

解题思路:假设在10000以内判断,将该数加上100后再开方,加上268后再开方,如果开方后的结果满足如下条件,即是结果。

程序源代码:

import math
for i in range(10000):
    x = int(math.sqrt(i + 100))  #注意一定要int转化为整型值
    y = int(math.sqrt(i + 268))
    if(x * x == i + 100) and (y * y == i + 268):
        print (i)

运行结果为:

21
261
1581


题三

输入某年某月某日,判断这一天是这一年的第几天?

解题思路:以3月10日为例,应该先把前两个月的天数加起来,然后再加上10天即本年的第几天;闰年且输入月份大于3时需考虑多加一天。

程序源代码:

year = int(input('year:\n'))
month = int(input('month:\n'))
day = int(input('day:\n'))


months = (0,31,59,90,120,151,181,212,243,273,304,334)
if 0 < month <= 12:
    sum = months[month - 1]
else:
    print ('data error')
    
sum += day


leap = 0
if (year % 400 == 0) or ((year % 4 == 0) and (year % 100 != 0)):
    leap = 1
if (leap == 1) and (month > 2):
    sum += 1
print ('it is the %dth day.' % sum)

运行结果为:

year:
2023
month:
3
day:
10
it is the 69th day.


题四

打印出所有的"水仙花数"("水仙花数"是指一个三位数,其各位数字立方和等于该数本身)

解题思路:利用for循环控制100-999个数,每个数解析出个位,十位,百位,再判断是否满足等式。

程序源代码:

for n in range(100,1000):
    i = n // 100
    j = int(n / 10 % 10)
    k = n % 10


    # print(i, j, k, sep='|')
    if n == i ** 3 + j ** 3 + k ** 3:
        print(n)

运行结果为:

153
370
371
407


题五

将一个正整数分解质因数。如:输入100,打印出90=2*2*5*5

解题思路:

对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:
(1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可;
(2)如果n>k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数n,重复执行第一步;
(3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。

程序源代码:

from sys import stdout
n = int(input("input number:\n"))
print ("n = %d" % n)


for i in range(2,n + 1):
    while n != i:
        if n % i == 0:
            stdout.write(str(i))
            stdout.write("*")
            n = n / i
        else:
            break
print ("%d" % n)

运行结果为:

input number:
100
n = 100
2*2*5*5


题六

求s=a+aa+aaa+aaaa+aa…a的值,其中a是一个数字

解题思路:例如2+22+222+2222+22222(此时共有5个数相加);几个数相加可以由键盘控制,每次后一个数相对于前一个数的增长规律。

程序源代码:

Tn = 0
Sn = []
n = int(input('n = :\n'))
a = int(input('a = :\n'))
for count in range(n):
    Tn = Tn + a
    a = a * 10
    Sn.append(Tn)
    print (Tn)


Sn=sum(Sn)
print (Sn)

运行结果为:

n = :
5
a = :
2
2
22
222
2222
22222
24690


题七

一个数如果恰好等于它的因子之和,这个数就称为"完数",找出1000以内的完数。

解题思路:完数例如6=1+2+3。参考分解质因数的方法,再判断。

程序源代码:

from sys import stdout
for j in range(2,1001):
    k = []
    n = -1
    s = j
    for i in range(1,j):
            if j % i == 0:
                n += 1
                s -= i
                k.append(i)
    if s == 0:
        print(j)
        for i in range(n):
            stdout.write(str(k[i]))
            stdout.write(' ')
        print(k[n])

运行结果为:

6
1 2 3
28
1 2 4 7 14
496
1 2 4 8 16 31 62 124 248


题八

有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13…求出这个数列的前20项之和。

解题思路:分子与分母的变化规律。

程序源代码:

a = 2.0
b = 1.0
s = 0
for n in range(1,21):
    s += a / b
    t = a
    a = a + b
    b = t
print(s)

运行结果为:

32.66026079864164


题九

利用递归方法求阶乘,如求5!

解题思路:递归思想。

程序源代码:

def fact(j):
    sum = 0
    if j == 0:
        sum = 1
    else:
        sum = j * fact(j - 1)
    return sum


print ('%d! = %d' % (5,fact(5)))

运行结果为:

5! = 120

相关推荐

苹果强制恢复出厂设置(苹果强制恢复出厂设置密码忘记了)
  • 苹果强制恢复出厂设置(苹果强制恢复出厂设置密码忘记了)
  • 苹果强制恢复出厂设置(苹果强制恢复出厂设置密码忘记了)
  • 苹果强制恢复出厂设置(苹果强制恢复出厂设置密码忘记了)
  • 苹果强制恢复出厂设置(苹果强制恢复出厂设置密码忘记了)
win7补丁目录(windows补丁目录)
  • win7补丁目录(windows补丁目录)
  • win7补丁目录(windows补丁目录)
  • win7补丁目录(windows补丁目录)
  • win7补丁目录(windows补丁目录)
联想显示器售后服务电话(lenovo人工客服24小时)

联想显示器保修期限在1~2年之内,一,联想“三包”服务承诺联想按国家有关部门颁布的《微型计算机商品修理更换退货责任规定》(以下称“三包”规定)中的内容和范围,向用户提供“三包”服务。联想承担法定“...

xp系统界面(xp系统界面无图形选项)
  • xp系统界面(xp系统界面无图形选项)
  • xp系统界面(xp系统界面无图形选项)
  • xp系统界面(xp系统界面无图形选项)
  • xp系统界面(xp系统界面无图形选项)
ipad密码忘了怎么办最简单的方法

一般ipad开机密码忘了有以下这种方法可以试一下:操作步骤/方法 1.下载最新版的iTunes。2.通过数据线将ipad与电脑iTunes相连接。3.将ipad按住电源键关机。4.同时按住电...

戴尔官翻机官网(戴尔官翻机购买地址)

肯定可以购买啊,价格还便宜。如果是官翻机应该是可以的,不像市场上的私人翻新机,这个质量应该有保障的可以买的。就是官方翻新机,市场上是有的。具体进入渠道先不管。反正市面上是肯定有的。但是这类手机是享受苹...

手机系统在哪里找(手机系统需要更新吗)

设置方法如下:1、首先输入锁屏密码,进入桌面;2、打开【设置】进入系统设置中心,打开【应用市场】即可查找应用程序;3、进入设置中心的【更多设置】,找到【开发者选项】;4、打开【开启开发者选项...

电脑城装机系统在哪里下载(电脑城都用什么装系统)

其实所有系统基本都一致,装机版已经集成一些必要软件,有个别也许还做了优化,但相对而言,在安全性和兼容性上差一些。不是绝对的,因为装机版也分好多种。纯净版最好,系统干净,使用放心。一般的电脑维修店都能够...

win7右键没有个性化(win7系统右键没有个性化)
win7右键没有个性化(win7系统右键没有个性化)

如果电脑右键没有出现个性化和属性选项,可能是系统出现了错误或者个人设置问题。解决方法如下:首先检查计算机中是否安装有系统文件,如果文件丢失或被删除,则需要重新安装系统文件;其次,可以尝试恢复系统默认配置,去掉不必要的自定义设置;最后,如果上...

2025-12-25 08:03 off999

ie11官方下载(ie11官方免费下载)

1/9点击左下窗户小图标。2/9点击齿轮设置图标。3/9点击【应用】。4/9点击【应用和功能】。5/9点击【程序和功能】6/9点击【启动或关闭windows功能】。7/9ie11没有勾选。8/9点击勾...

东芝笔记本怎么进入bios(东芝笔记本怎么进入语言界面)

以下是一些通用的方法:1.重启或开机时,按下F2键进入BIOS设置界面。在某些笔记本上,您需要按住Fn键才能按F2键。2.重启或开机时,同时按下Ctrl+Alt+Del键,然后立即按F2键...

window10家庭版下载(window10家庭版下载地址)

家庭版用户可通过以下步骤下载AutoCAD2020:访问Autodesk官方网站(autodesk.com)并创建或登录您的Autodesk帐户。导航到AutoCAD2020...

超级吞噬系统txt(超级吞噬系统txt完整版下载)

男主从未推倒柳儿,一直把柳儿当妹妹,出去历练升级从未带着她,后面男主把她安置好后,作者就再没写过她。两人一直分开。吞噬星空的九大超级势力有六大巅峰种族,人族,虫族,机械族,妖族,晶族,狱族,还有另外三...

dos如何格式化硬盘并分区(怎么在dos下格式化分区工具)

1、方式一:在“开始”搜索框汇总输入“cmd”并回车,2、方式二:单击“开始”——所有程序——附件——命令提示符,3、查看分区数:在DOS界面下输入“wmicdiskdrivegetpartit...

vivo系统升级最新版本(vivo系统升级到什么版本了)

您可以按照以下步骤来更新vivoY5s的操作系统:1.进入设置-系统更新。2.点击“检查更新”,确保您的手机已经连接上WiFi并检测到有可用的更新。3.如果有可用的更新,请按照提示下载并安...

取消回复欢迎 发表评论: