1.【问题描述】
根据编程模板补充代码,计算斐波那契数列的值,具体功能如下:
获取用户输入整数 N,其中,N 为正整数;
计算斐波那契数列的值。
如果将斐波那契数列表示为 fbi(N),对于整数 N,值如下:
当 N = 1 / N = 2 时,fbi(1) 和 fbi(2)的值是 1;
当 N > 2 时,fbi(N) = fbi(N-1) + fbi(N-2);
【输入形式】
输入使用 input(),不要增加额外的提示信息;
【输出形式】
输出使用 print(),不要增加额外的输出信息;
【样例输入】
输入:“4”
【样例输出】
输出:“3”
【样例说明】
【评分标准】
def fun(i):
if i==1 or i==2:
return 1
else:
return fun(i-1)+fun(i-2)
x=int(input())
y=fun(x)
print(y)
2.【问题描述】
输入一个正整数n,把数字n分解成不能再分解因子的乘法,比如:8=222, 10 = 2*5,而不是 8 = 2 * 4 这种可以再分解的。
【输入形式】
输入一个正整数n
【输出形式】
输出包含所有因子的列表
【样例输入】
12
【样例输出】
[2, 2, 3]
【样例说明】
【评分标准】
def fun(n):
ls=[]
i=2
while i<=n:
if n%i==0:
ls.append(i)
n=n//i
else:
i+=1
return ls
n=int(input())
lt=fun(n)
print(lt)
3.输入一个正整数n,统计从[0,n]之间的最大的10个素数之和。本题保证测试用例至少有10个满足条件的素数。
例如:输入31 ,应求得3,5,7,11,13,17,19,23,29,31之和。
本题要求使用自定义函数完成,代码框架参考如下:
def isprime(n): #判断素数函数
......
def f(n): #找小于n的素数并求和
......
......
p=int(input())
print(f§)
【输入形式】
【输出形式】
【样例输入】
31
【样例输出】
158
【样例说明】
【评分标准】
一项测试数据超时
from math import*
def isprime(i):
flag=1
for t in range(2,int(sqrt(i))+1):
if i%t==0:
flag=0
return flag
def fun(n):
ls=[]
sum=0
for i in range(0,n+1):
if isprime(i):
ls.append(i)
ls.sort(reverse=True)
for j in range(10):
sum+=ls[j]
return sum
n=int(input())
sum=fun(n)
print(sum)
改进:
from math import*
def isprime(i):
flag=1
for t in range(2,int(sqrt(i))+1):
if i%t==0:
flag=0
return flag
def fun(n):
ls=[]
sum=0
for i in range(n,1,-1)://从n到2逆序循环
if isprime(i):
ls.append(i)
if len(ls)==10:
break
ls.sort(reverse=True)
for j in range(10):
sum+=ls[j]
return sum
n=int(input())
sum=fun(n)
print(sum)