题目描述
斐波那契数列是一个形如下面的数列:
1,1,2,3,5,8,13,21,34,55,89……
从第3项开始,有:f(n)=f(n-1)+f(n-2)
在这个数列中,有些数是合数,比如8、21、34等,有些数是素数,比如2、3、5、13等。而前面两个1既不是合数也不是素数。
下面请你求出该数列中指定的第n个合数。比如n=1时,对应的数是8;n=2时,对应的数是21。
提示
输入输出格式
输入格式
一个正整数n(1≤n≤30)
输出格式
一个正整数,在斐波那契数列中排第n位的合数
输入输出样例
输入
3
输出
34
def is_prime(num):# 判断一个数是否为素数if num < 2:return Falsefor i in range(2, int(num ** 0.5) + 1):if num % i == 0:return Falsereturn Truedef fibonacci_composite(n):# 求斐波那契数列中第n个合数fib_sequence = [1, 1] # 斐波那契数列的前两项count = 0 # 记录已生成的合数个数i = 2 # 当前斐波那契数列的索引while count < n:fib_number = fib_sequence[i - 1] + fib_sequence[i - 2] # 计算下一个斐波那契数if not is_prime(fib_number): # 判断是否为合数count += 1if count == n: # 找到第n个合数return fib_numberfib_sequence.append(fib_number)i += 1return None# 读取输入
n = int(input())# 调用函数并输出结果
result = fibonacci_composite(n)
print(result)