year = int(input('请输入一个年份:')) if(((year % 4 == 0) and (year % 100 != 0))or(year % 400 == 0)): print("{0}是闰年".format(year)) else: print("{0}不是闰年".format(year))
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,'个素数')
上述代码根据用户指定区间来输出素数的个数。
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)))
斐波那契数列指的是这样一个数列 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 = ' ')
文章来源: python实例练习