1. 程式人生 > 其它 >Python-數學運算相關面試題

Python-數學運算相關面試題

"""
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())