实例 001:斐波那契
题目:斐波那契数列,又称黄金分割数列,
例如: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))
复制代码
实例 002:大衍数列
题目:大衍数列,来源于《乾坤谱》中对易传“大衍之数五十”的推论。
数列中的每一项,都代表太极衍生过程中,曾经经历过的两仪数量总和。
是中华传统文化中隐藏着的世界数学史上第一道数列题。
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)
复制代码
实例 003:卢卡斯数
题目:卢卡斯数有很多性质和斐波那契数很相似。
如 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)
复制代码
实例 004:佩尔数列
题目:佩尔数的数列从 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)
复制代码
实例 005:帕多瓦数
题目:帕多瓦数列是由帕多瓦总结而出的。它的特点为从第四项开始,每一项都是前面 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)
复制代码
实例 006:卡特兰数
题目:卡特兰数又称卡塔兰数,是组合数学中一个常出现在各种计数问题中的数列。
由比利时数学家欧仁·查理·卡塔兰 命名,通项式:(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)
复制代码
实例 007:兴趣数字
题目:贝贝对数字中包含 2、0、1、9 的数字很感兴趣,求 1~n 中包含这几个数字之和是多少?
num_sum = 0
num = int(input('请您输入1~n的数字范围:'))
for x in range(1, num + 1):
for y in ['2', '0', '1', '9']:
if y in str(x):
num_sum += x
break
print(num_sum)
复制代码
实例 008:神秘数字Ⅰ
题目:有一个四位数,各位数字之和等于 34,符合这个条件的四位数是?
num = []
for x in range(1000, 10000):
ls = [int(y) for y in list(str(x))]
if sum(ls) == 34:
print(x)
复制代码
实例 009:神秘数字Ⅱ
题目:有一个四位数,个位数字与百位数字的和是 12,十位数字与千位数字的和是 9,
如果个位数字与百位数字互换,千位数字与十位数字互换,新数就比原数增加 2376,求原数。
for i in range(1000, 10000):
ls = list(str(i))
if int(ls[1]) + int(ls[3]) == 12 and int(ls[0]) + int(ls[2]) == 9:
ls[1], ls[3] = ls[3], ls[1]
ls[0], ls[2] = ls[2], ls[0]
num = int(''.join(ls))
if num - i == 2376:
print(i)
复制代码
实例 010:神秘数字Ⅲ
题目:由 4 个不同的数字,组成的一个乘法算式,它们的乘积仍然由这 4 个数字组成。
例如:210 x 6 = 1260 8 x 473 = 3784 27 x 81 = 2187
都符合要求。一共有多少种满足要求的算式。
num_count = 0
for x in range(1, 1000):
for y in range(x, 1000):
l1 = list(str(x * y))
l2 = list(str(x) + str(y))
l1.sort()
l2.sort()
num = 0
for i in l1:
if l2.count(i) == 1 and len(l1) == 4 and l1 == l2:
num += 1
if num == 4:
num_count += 1
print('第{}组 {} * {} = {} '.format(num_count, x, y, x * y))
else:
break
复制代码
实例 011:寻找数字
题目:203879 * 203879 = 41566646641,
仔细观察,203879 是个 6 位数,
它的每个数位上的数字都是不同的,
平方后的所有数位上都不出现组成它自身的数字。
具有这样特点的 6 位数还有一个,请你找出它。
for x in range(100000, 1000000):
a = x ** 2
b = 0
for y in str(x):
if y not in str(a) and str(x).count(y) == 1:
b += 1
else:
break
if b == 6:
print(x)
复制代码
实例 012:猜猜年龄
题目:一位年轻人年龄的 3 次方是个 4 位数、年龄的 4 次方是个 6 位数。
这 10 个数字正好包含了从 0 到 9 这 10 个数字且每个数字都恰好出现 1 次。
”请你推算一下,他的年龄是多少?
for x in range(1, 30):
if len(str(x ** 3)) == 4 and len(str(x ** 4)) == 6:
num = str(x ** 3) + str(x ** 4)
num_count = 0
for y in [str(i) for i in range(10)]:
if num.count(y) == 1:
num_count += 1
if num_count == 10:
print(x)
复制代码
实例 013:计算年龄
题目:贝贝从某年开始每年都举办一次生日 party,
并且每次都要吹熄与年龄相同根数的蜡烛。
现在算起来,他一共吹熄了 236 根蜡烛。
请你计算她从多少岁开始过生日 party?
她今年几岁?
for x in range(1, 100):
age_sum = 0
for y in range(x, 100 - x):
age_sum += y
if age_sum == 236:
start_age = x
now_age = y
print('贝贝从{}岁开始过生日,贝贝今年{}岁。'.format(start_age, now_age))
elif age_sum > 236:
break
复制代码
实例 014:对折面条
题目:一根高筋拉面,中间切一刀,可以得到 2 根面条。
如果先对折 1 次,中间切一刀,可以得到 3 根面条。
如果连续对折 2 次,中间切一刀,可以得到 5 根面条。
那么,连续对折 10 次,中间切一刀,会得到多少根面条呢?
noodles_count = 0
for i in range(1, 11):
noodles_count = 2 ** i + 1
print('第10次对折得到{}根面条'.format(noodles_count))
复制代码
实例 015:堆垒煤球
题目:有一堆煤球,堆成三角棱锥形。具体:
第一层放 1 个,
第二层 3 个(排列成三角形),
第三层 6 个(排列成三角形),
第四层 10 个(排列成三角形),
如果一共有 100 层,共有多少个煤球?
floor_count = 0
sum_count = 0
for i in range(1, 101):
floor_count += i
sum_count += floor_count
print('第{}层需要{}个煤球,1-100层共有煤球{}个'.format(i, floor_count, sum_count))
复制代码
CSDN 博主「漫步桔田」原文链接:https://blog.csdn.net/u013157570/article/details/121641765
评论