1.斐波那契数列
1.1题目描述
斐波那契数列(Fibonacci sequence),又称黄金分割数列,因数学家莱昂纳多·斐波那契(Leonardo Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:1、1、2、3、5、8、13、21、34、……在数学上,斐波那契数列以如下被以递推的方法定义:F(0)=0,F(1)=1, F(n)=F(n - 1)+F(n - 2)(n ≥ 2,n ∈ N*)
1.2算法实现
def fib(index):
if index==1 or index==2:
return 1
return fib(index-2)+fib(index-1)
print(fib(2))
2.判断一个数是否是2的N次方
2.1解题思路
通过二进制的方法可以判断一个数num是不是2的n次方幂,规律可知,只要是2的次方幂,必然是最高位为1,其余为0,当num-1时,则最高位是0,其余是1
2.2算法实现
def bin_check(m):
if m<1:
return False
n=m&(m-1)
return n==0
# for i in range(0,50):
# print(i,':',bin_check(i))
3.n以内的素数及个数
3.1解题思路
素数只能被1和自身整除的数。判断一个数是不是素数,是用2和这个数之间的所有的数来求余,看其是否能被整除,如果不能整除,认为这个数为素数,如果不能则提前结束。
3.2算法实现
import math
def isPrime(x):
for i in range(2,int(math.sqrt(x))+1) :
if x%i==0 :
return False
return True
def countPrimes(n):
count =0
Prime=[]
if n<2:
return 0
for i in range(2,n+1):
if isPrime(i):
count=count+1
Prime.append(i)
return count,Prime
# print(countPrimes(20))