输入n,用递推法(例如前项之间的关系推导后项,本题为一重循环)编程求1+2!+3!+...+n!的和并输出。
n = int(input('n'))
s = 0
m = 1
for i in range(1, n+1):
m = m*i
s += m
print(s)
寻找第6个默尼森数
经典程序设计问题:找第n个默尼森数。P是素数且M也是素数,并且满足等式M=2**P-1,则称M为默尼森数。例如,P=5,M=2**P-1=31,5和31都是素数,因此31是默尼森数。
import math
def prime(n):
if n == 1:
return False
else:
for i in range(2, int(math.sqrt(n))+1):
if n % i == 0:
return False
return True
cnt = P = 0
while cnt != 6:
P += 1
if prime(P):
M = 2**P - 1
if prime(M):
cnt += 1
print(M)