Python 判断闰年
year = int(input('请输入一个年份:'))
if(((year % 4 == 0) and (year % 100 != 0))or(year % 400 == 0)):
print("{0}是闰年".format(year))
else:
print("{0}不是闰年".format(year))
python质数判断
num = int(input('请输入一个数:'))
if num > 1:
for i in range(2, num):
if(num % i == 0):
print(num,"不是质数")
print(i,"乘以",num // i,"是",num)
break
else:
print(num,"是质数")
else:
print(num,"不是质数")
时间复杂度较高,在判断一个大数是质数还是合数的情况下,应该在查看因子那里的循环中使用到平方根,代码如下:
import math
num = int(input('请输入一个数:'))
if num > 1:
square_num = math.floor(num ** 0.5)
for i in range(2, (square_num + 1)):
if(num % i == 0):
print(num,"不是质数")
print(i,"乘以",num // i,"是",num)
break
else:
print(num,"是质数")
else:
print(num,"不是质数")
原理是用了开根号法:
假如一个数N是合数,它有一个约数a,那么有a×b=N,则a、b两个数中必有一个大于或等于根号N,一个小于或等于根号N。因此,只要小于或等于根号N的数(1除外)不能整除N,则N一定是素数。
import math
# 输出指定范围内的素数
# 用户输入范围
lower = int(input("输入区间最小值: "))
upper = int(input("输入区间最大值: "))
print("素数结果如下:")
print("="*10)
pri_num = 0
com_num = 0
for num in range(lower, upper + 1):
# 找到其平方根( √ ),减少算法时间
square_num = math.floor(num ** 0.5)
# 素数大于 1
if num > 1:
for i in range(2, (square_num + 1)):
if (num % i) == 0:
com_num += 1
break
else:
pri_num += 1
print(num)
print("="*10)
print(com_num,'个合数')
print(pri_num,'个素数')
上述代码根据用户指定区间来输出素数的个数。
Python 阶乘实例
num = int(input("请输入一个数字:"))
factorial = 1
if num < 0:
print('负数没有阶乘')
elif num ==0:
print('0的阶乘为1')
else:
for i in range(1,num + 1):
factorial = factorial * i
print("%d 的阶乘是 %d"%(num,factorial))
math库中自带阶乘,代码修改如下:
import math
num = int(input("请输入一个数字:"))
if num < 0:
print("负数是没有阶乘的!")
else:
print("{0} 的阶乘为 {1}".format(num, math.factorial(num)))
九九乘法表
for i in range(1, 10):
for j in range(1, i + 1):
if i == j:
print('{1}×{0}={2}'.format(i, j, i * j))
else:
print('{1}×{0}={2}'.format(i, j, i * j), end='\t')
将上述代码段用一行代码实现:
print('\n'.join(' '.join("%dx%d=%-2d" % (x, y, x*y) for x in range(1, y+1)) for y in range(1, 10)))
Python 斐波那契数列
斐波那契数列指的是这样一个数列 0, 1, 1, 2, 3, 5, 8, 13,特别指出:第0项是0,第1项是第一个1。从第三项开始,每一项都等于前两项之和。
# 获取用户输入数据
nterms = int(input("你需要几项?"))
# 第一和第二项
n1 = 0
n2 = 1
count = 2
# 判断输入的值是否合法
if nterms <= 0:
print("请输入一个正整数。")
elif nterms == 1:
print("斐波那契数列:")
print(n1)
else:
print("斐波那契数列:")
print(n1,",",n2,end=" , ")
while count < nterms:
nth = n1 + n2
print(nth,end=" , ")
# 更新值
n1 = n2
n2 = nth
count += 1
递归实现
def fab(n):
if n == 1:
return 0
if n == 2:
return 1
if n > 2:
return fab(n-1) + fab(n-2)
def printfablist(n):
for i in range(1, n+1):
print(fab(i),end = ' ')