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

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

off999 2024-12-11 16:25 18 浏览 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

相关推荐

win10系统自动重启频繁(win10系统经常自动重启)
  • win10系统自动重启频繁(win10系统经常自动重启)
  • win10系统自动重启频繁(win10系统经常自动重启)
  • win10系统自动重启频繁(win10系统经常自动重启)
  • win10系统自动重启频繁(win10系统经常自动重启)
2010office激活密钥25个字符
2010office激活密钥25个字符

步骤/方式1officeprofessionalplus2010:(office专业版)6QFdx-pYH2G-ppYFd-C7RJM-BBKQ8Bdd3G-xM7FB-Bd2HM-YK63V-VQFdKVYBBJ-TRJpB-QFQ...

2025-11-07 01:03 off999

刷机(刷机软件)

答:用下步骤可把电脑刷机:1、制作启动U盘,如大白菜U盘启动盘,然后将下载的系统iso文件直接复制到U盘的GHO目录下。2、在需要刷机的台式电脑上插入U盘,重启后不停按F12、F11、Esc等快捷键打...

u盘装linux系统教程(u盘安装linux操作系统安装教程图解)

以制作Ubuntulinux系统为例:1、首先要下载Ubuntu系统,在搜索Ubuntu,打开Ubuntu官网。2、然后在下载那里,选择桌面版。3、选择好版本之后,点击下载。4、随后跳转到一个网页,...

系统软件卸载器下载(系统软件卸载器专业版)

小米手机清理安装包有两个方法:1.用安全中心清理,步骤如下:打开安全中心,点击垃圾清理点击右上角的手机瘦身屏幕滑到底部,有一个安装包清理2.用文件管理清理,步骤如下:打开文件管理,选择安装包...

电脑开机不了怎么弄(电脑开机不了怎么弄回来)

1、打开电脑,点击【开始】键,可以直接在桌面左下角点击,也可以点击键盘上的电源键;2、在跳出的菜单栏中点击【控制面板】;3、在【控制面板】页面中,找到【系统和安全】,并点击;4、找到操作中心页面,并点...

root权限获取下载(root权限获取教程)

你好!一般的安卓系统的手机都是可以root的,不过root的方法是不一样的。1,一般的手机可以直接在手机上用手机上的root的软件就可以的,一些root工具都可以的等等。2,在就是小米类型的手机直接刷...

下载百度软件(下载百度软件商店安装不了)
  • 下载百度软件(下载百度软件商店安装不了)
  • 下载百度软件(下载百度软件商店安装不了)
  • 下载百度软件(下载百度软件商店安装不了)
  • 下载百度软件(下载百度软件商店安装不了)
dell笔记本电脑如何重装系统
  • dell笔记本电脑如何重装系统
  • dell笔记本电脑如何重装系统
  • dell笔记本电脑如何重装系统
  • dell笔记本电脑如何重装系统
google浏览器安卓版(google浏览器安卓版华军软件园)
  • google浏览器安卓版(google浏览器安卓版华军软件园)
  • google浏览器安卓版(google浏览器安卓版华军软件园)
  • google浏览器安卓版(google浏览器安卓版华军软件园)
  • google浏览器安卓版(google浏览器安卓版华军软件园)
改ip地址的软件有哪些(改ip的软件真的有用吗)

没有绝对好用的IP修改器,ip修改器只有合适自己的才是最好的。因为IP修改器的使用环境不一样,每个ip修改器功能和特点不同,自己用途和范围选择合适的。比如,有些ip修改器适合修改ip地址,有的IP修改...

台式机安装系统步骤(绝尘侠台式机如何u盘安装系统)

中柏EZbookA13使用U盘重装系统:1、将u盘制作成【u启动u盘启动盘】,接着前往相关网站下载win系统存到u盘启动盘,重启电脑等待出现开机画面按下启动快捷键,选择u盘启动进入到主菜单,选取“【...

台式电脑w7怎么升级w10(台式机win7升级win10)

Win7不够8G内存怎么升级到win10。朋友也就是说你现在在使用win7系统。内存不够8G那就是4G的呀。Windows10最低配置的内存就是4G。所以说你要把windows7升级为window...

电脑怎么下载百度(笔记本电脑怎么下载百度)

电脑下载浏览器步骤如下1.打开电脑浏览器,搜索想要下载的电脑版的浏览器,打开官网2.进入官网,点击立即下载3.出现新建下载任务图标,点击下载,下载安装包4.下载完毕,点击打开5.进入安装界面,点击安装...

gho怎么安装系统(gho怎么重装系统)
  • gho怎么安装系统(gho怎么重装系统)
  • gho怎么安装系统(gho怎么重装系统)
  • gho怎么安装系统(gho怎么重装系统)
  • gho怎么安装系统(gho怎么重装系统)

取消回复欢迎 发表评论: