目 录
实例001:数字求和
实例002:寻找素数
实例003:数字阶乘
实例004:水仙花数
实例005:玫瑰花数
实例006:马匹驮货
实例007:神秘数字
实例008:卡普雷卡
实例009:幸运盒子
实例010:幸运数字
实例011:鸡兔同笼
实例012:米粒棋盘
实例013:自守数字
实例014:等差数和
实例015:等比数和
实例016:斐波那契
实例017:大衍数列
实例018:卢卡斯数
实例019:佩尔数列
实例020:帕多瓦数
实例021:卡特兰数
题目:请你编写程序计算出1-m的和。例如:1+2+3=6 或 1+3+5=9
num = 0
m = int(input('请你输入终点数字:'))
n = int(input('请你输入间隔数字:'))
for i in range(1, m + 1, n):
num += i
print(num)
题目:素数又称质数是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数
例如:2、3、5、7、11、13、17......请你找出100以内的素数。
for x in range(2, 100):
for y in range(2, x):
if x % y == 0:
break
else:
print(x)
题目:请你输入一个正整数,并返回该数字的阶乘是多少?
方法一:
n = int(input('请您输入一个正整数:')
sum = 1
for i in range(1,n+1):
sum*=i
print(sum)
方法二:
n = int(input('请您输入一个正整数:'))
def a(x):
if x == 1:
return 1
return x * a(x-1)
print(a(n))
题目:水仙花数是指一个三位数,
其各位数字3次幂和等于该数本身。
例如:153=1^3+5^3+3^3。
for i in range(100, 1000):
x = i // 100
y = i // 10 % 10
z = i % 10
if x ** 3 + y ** 3 + z ** 3 ==i:
print(i)
题目:玫瑰花数是指一个四位数,
其各位数字4次幂和等于该数本身。
例如:1634=1^4+6^4+3^4+4^4。
for i in range(1000, 10000):
a = i // 1000
b = i % 1000 // 100
c = i % 100 // 10
d = i % 10
if a ** 4 + b ** 4 + c ** 4 + d ** 4 == i:
print(i)
题目:100匹马驮100担货,大马一匹驮3担,
中马一匹驮2担,小马两匹驮1担,
计算大、中、小马各有多少组合?
for x in range(1, 100):
for y in range(1, 100):
z = 100 - x - y
if 3 * x + 2 * y + z / 2 == 100:
print(x, y, z)
题目:请你找出200-300之间的三位数,各位之积为42,各位之和为12的神秘数字是多少?
for i in range(200, 300):
x = x = i // 100
y = y = i // 10 % 10
z = z = i % 10
if x * y * z == 42 and x + y + z == 12:
print(i)
题目:数学家卡普雷卡偶然发现铁路旁的里程碑“3025”被雷击得一分为二:
变成30与25,他敏锐地注意到:(30+25)^2=3025。请你找出10000以内的四位卡普雷卡数。
for i in range(1000, 10000):
a = int(str(i)[:2])
b = int(str(i)[2:])
if (a + b) ** 2 == i:
print(i)
题目:一个同学抽了一个幸运数字宝盒,工作人员给出了如下提示:
是100以内的奇数、能被7整除、十位数字是个位数字的2倍
编程求这个数字可能是多少?
for i in range(1, 100):
if i % 2 == 1 and i % 7 == 0 and (i // 10) / (i % 10) == 2:
print(i)
题目:请你按题目要求找出 1—1000之间的完全幸运数要求如下:
该数是6的倍数、末尾是6、左右对称。
for i in range(1, 1000):
if i % 6 == 0 and str(i) == str(i)[::-1] and str(i)[-1] == '6':
print(i)
题目:定义一个函数实现输入鸡兔总头数(h)和总脚数f,
计算当鸡数c和兔数r,如数据不合理,输出无解。
def aaa(h, f):
b = f / 2 - h
a = h - b
if a == int(a) or b == int(b):
print('鸡有{}只,兔有{}只'.format(int(a), int(b)))
else:
print('无解')
aaa(21, 55)
aaa(21, 66)
题目:在棋盘的第1格放1粒大米,第2格放2粒,第3格放4粒,
之后的每一格中的米粒数目都是相邻前一格的两倍,
一直放到最后的第64格,请你计算第64各中应放多少米?
for i in range(64):
x = 2 ** i
print('第64格应放米{}粒'.format(x))
题目:自守数是指一个数的平方的尾数等于该数自身的自然数。
例如:6^2=36、25^2 =625、76^2=5776求1000以内的自守数。
for i in range(1,1000):
if str(i**2)[-len(str(i)):]==str(i):
print(i)
题目:编写一个等差数列,通用式为:S=n(a1+an)/2
n为数字个数,a1为开始数字,an为结尾数字
a = int(input('请你输入开始数字是:'))
b = int(input('请你输入结尾数字是:'))
c = int(input('请你输入几个数字和:'))
s = int(c * (a + b) / 2)
print(s)
题目:编写一个等比数列,通用式为:S=a1(1-q**n)/(1-q)
n为数字个数,a1为开始数字,q为公比数字(q≠1)。
a = int(input('请你输入开始数字是:'))
q = int(input('请你输入等比公比是:'))
n = int(input('请你输入几个数字和:'))
if q == 1:
print('输入有误,q≠1')
else:
s = int(a * (1 - q ** n) / (1 - q))
print(s)
题目:斐波那契数列,又称黄金分割数列,
例如:1、1、2、3、5、8、13、21......,
请找出规律打印输出前20项的斐波那契数列。
方法一:
a, b = 0, 1
for i in range(20):
a, b = b, a + b
print(a)
方法二:
def a(x):
if x == 1 or x == 2:
return 1
else:
return a(x - 1) + a(x - 2)
for i in range(1, 21):
print(a(i))
题目:大衍数列,来源于《乾坤谱》中对易传“大衍之数五十”的推论。
数列中的每一项,都代表太极衍生过程中,曾经经历过的两仪数量总和。
是中华传统文化中隐藏着的世界数学史上第一道数列题。
0、2、4、8、12、18、24、32、40、50......
通项式:(n*n-1)÷2 (n为奇数)、n*n÷2 (n为偶数)
a = []
for i in range(1, 11):
if i % 2 == 1:
a.append(int((i ** 2 - 1) / 2))
else:
a.append(int((i ** 2) / 2))
for i in a:
print(i)
题目:卢卡斯数有很多性质和斐波那契数很相似。
如 Ln = Ln-1 + Ln-2,其中不同的是 L1 = 1、 L2 = 3。
所以卢卡斯数有:1, 3, 4, 7, 11, 18, 29, 47, 76, 123, ......
当中的平方数只有 1 和 4,
卢卡斯数列和斐波那契都是我们以后经常要用到的数列,
对于研究大盘以及个股时间上的结构有至关重要的作用。
a, b = 2, 1
for i in range(10):
a, b = b, a + b
print(a)
题目:佩尔数的数列从0和1开始,从第3个数字开始每一个佩尔数都是前一项两倍再加上前二项。前10个佩尔数是:0, 1, 2, 5, 12, 29, 70, 169, 408, 985......
a, b = 1, 0
for i in range(10):
a, b = b, 2 * b + a
print(a)
题目:帕多瓦数列是由帕多瓦总结而出的。它的特点为从第四项开始,每一项都是前面2项与前面3项的和。帕多瓦数列是:1,1,1,2,2,3,4,5,7,9,12,16......
a, b, c = 0, 1, 1
for i in range(10):
a, b, c = b, c, a + b
print(a)
题目:卡特兰数又称卡塔兰数,是组合数学中一个常出现在各种计数问题中的数列。
由比利时数学家欧仁·查理·卡塔兰 命名,通项式:(2n)!/((n+1)!*n!)
其前几项为 : 1, 1, 2, 5, 14, 42, 132, 429, 1430, 4862......
方法一:
import math
for i in range(10):
a = math.factorial(i * 2)
b = math.factorial(i + 1)
c = math.factorial(i)
d = int(a / (b * c))
print(d)
方法二:
def a(n):
x = 1
for i in range(2, 2 * n + 1):
x *= i
return x
def b(n):
y = 1
for i in range(2, n + 2):
y *= i
return y
def c(n):
z = 1
for i in range(2, n + 1):
z *= i
return z
for i in range(10):
num = int(a(i) / (b(i) * c(i)))
print(num)
编程界的一枚小学生,学习过程中遇到的一些有趣数学习题供小伙伴们交流学习,
代码优化还请大佬们多多指点,题目不断更新,也请遇到有趣题目的小伙伴留言。