Python-面试题-数学运算(math)

"""
2.1.水仙花数

如果一个 3 位数等于其各位数字的立方和,则称这个数为水仙花数。
例如:153 = 1^3 + 5^3 + 3^3,因此 153 就是一个水仙花数
那么问题来了,求1000以内的水仙花数(3位数)
"""
# a = 153
# for i in str(a):
#     print(i)
for i in range(100,1000):
    s = sum(int(x)**3 for x in str(i))
    if i == s:
        print(i)


""" 2.2完全数 如果一个正整数等于除它本身之外其他所有除数之和,就称之为完全数。 例如:6是完全数,因为6 = 1+2+3; 下一个完全数是28 = 14+7+4+2+1。 求1000以下的完全数 """ for i in range(1, 1000): s = [] for j in range(1, i): if i % j == 0: s.append(j) if i == sum(s): print(i) #使用列表生成式 for i in range(1,1000): if sum([j for j in range(1,i) if i % j==0]) ==i: print(i)


""" 2.3 数字1-100求和 求1+2+3…+100和 """ s = 0 for i in range(101): s += i print(s)


""" 2.4计算求1-2+3-4+5-…-100的值 计算求1-2+3-4+5-…-100的值 """ appe = 1 s1 = 0 while appe <=100: if appe % 2 ==1: s1 += appe #相当于 s1 = s1 + appe else: s1 -= appe # 相当于s1 = s1 - appe appe += 1 #相当于appe = appe + 1 print(s1)


""" 2.5计算求1+2-3+4-5… …100 的值 计算求1+2-3+4-5… …100 的值 """ add = 1 s = 0 while add <=100: if add==1 or add % 2 ==0: s +=add else: s -=add add +=1 print(s)


""" 2.6计算 1-n 之间的所有 5 的倍数之和 定义一个函数:计算 1-n 之间的所有 5 的倍数之和,默认计算 1-100 ( n 是 一个整数) """ #第一种方法 def my_func(n): a = 1 s = 0 for a in range(1,n+1): if a % 5 == 0: s += a print(s) my_func(101) #第二种方法 def my_func1(n=100): return sum([j for j in range(1,n+1) if j % 5==0]) print(my_func1())


""" 2.7 n个自然数的立方和 计算公式 13 + 23 + 33 + 43 + …….+ n3 1的立方+2的立方+3的立方…… 实现要求: 输入 : n = 5 输出 : 225 对应的公式 : 13 + 23 + 33 + 43 + 53 = 225 """
def my_func2(n=5): return sum([x**3 for x in range(1,n+1)]) """


2.8 阶乘10! 阶乘的意思: 10!=10x9x8x7x6x5x4x3x2x1 求10! """ n=10 s=1 for i in range(1,n+1): s *= i print(s)


""" 2.9求1+2!+3!+…+10!的和 求1+2!+3!+…+10!的和 """ #方法一 n=1 s = 1 #作阶乘时初始值应设置为1 y = 0 #作累加时初始值应设置为0 while n <=10: s *= n y += s n+=1 print(y) #方法二 s = 0 a = 1 for i in range(1,11): a *= i s += a print(s)


""" 2.10求s=a+aa+aaa+aaaa+aa…a的值 求s=a+aa+aaa+aaaa+aa…a的值 如:n = 5 a = 3 33333 = 3x10**4+ 3x10**3+ 3x10**2 + 3x10**1 +3x10**0 """ def my_func3(a=3,n=5): s=0 for i in range(n): s += a*10**(i) return s print(my_func3())


""" 2.11 斐波那契数列1、1、2、3、5、8、13 ….. 已知一个数列:1、1、2、3、5、8、13、。。。。的规律为从 3 开始的每一项都等于其前两项的和,这是斐波那契数列。 求满足规律的 100 以内的所有数据 """ def my_func4(n = 100): a = 0 b = 1 while a <= n: print(a,end = " ",flush=True) a , b = b , a + b print(my_func4())

 



posted @ 2021-06-24 09:55  美女爱找茬  阅读(300)  评论(0编辑  收藏  举报