""" 求 200 以内能被 17 整除的最大正整数 """for i inrange(200,-1,-1):if i %17==0:print(i)break
第八题
""" 判断一个数是不是素数 """# 法一 :O(n) 遍历defis_prime(n):if n ==1:returnFalsefor i inrange(2,n):if n % i ==0:returnFalsereturnTrueprint(is_prime(200))# 法二 :当一个数不是质数时,必定存在两个约数,一个大于等于sqrt(n),另一个小于sqrt(n)import math
defis_prime2(n):if n ==1:returnFalsefor i inrange(2,int(math.sqrt(n))+1):if n % i ==0:returnFalsereturnTruefor i inrange(1,10):print(i,is_prime2(i))
第九题
""" 输出由 1234 这四个数字组成的每位数都不相同的对所有三位数 """# 法一 :O(n^3) 咳咳,不太优雅,肯定要优化definput_three_num(n):if n <3:returnFalseif n ==3:return n
res =[]
lst =list(str(n))# print(lst)for i inrange(len(lst)-2):for j inrange(i+1,len(lst)-1):for k inrange(j+1,len(lst)):
res.append(lst[i]+ lst[j]+ lst[k])return res
print(*input_three_num(12345))
第十题
""" 计算组合数 """deffib(n):#计算阶乘if n ==0or n ==1:return1if n ==2:return2return n * fib(n-1)defcomb(n,i):
i =min(i,n-i)returnint(fib(n)/(fib(i)* fib(n - i)))print(comb(4,2))
第十一题
""" 冒泡排序 """# 原地排个序吧defbubble_sort(lst):for i inrange(len(lst)):for j inrange(len(lst)-1- i):if lst[j]> lst[j+1]:
lst[j],lst[j+1]= lst[j+1],lst[j]# 测试 import random
lst =[i for i inrange(100)]
random.shuffle(lst)print(lst)
bubble_sort(lst)print(lst)
第十二题
""" 选择排序 """defselection_sort(lst):for i inrange(len(lst)):
min_index = i
for j inrange(i+1,len(lst)):if lst[j]< lst[min_index]:
min_index = j
lst[i], lst[min_index]= lst[min_index], lst[i]
lst =[i for i inrange(100)]# 测试import random
random.shuffle(lst)print(lst)
selection_sort(lst)print(lst)
第十三题
""" 二分查找 """defbinary_search(lst,target):
l =0
r =len(lst)-1while l <= r:
mid =(r + l)//2if lst[mid]== target:return mid
if lst[mid]< target:
l = mid +1else:
r = mid -1returnNone
lst =[1,2,3,4,5,6,7,8,9,10]print(binary_search(lst,3))