定义一个函数f,要求在键盘上输入任意输入一个数n,输出不大于n的最大素数
def f():
n = int(input("请输入一个数n:"))
for i in range(n, 1, -1):
if is_prime(i):
return i
return None
def is_prime(num):
if num <= 1:
return False
for i in range(2, int(num**0.5)+1):
if num % i == 0:
return False
return True
首先,我们输入一个数n。然后,从n开始向下遍历,找到第一个素数就返回它。如果找不到素数,返回None。
is_prime函数用于判断一个数是否为素数。如果它小于等于1,直接返回False。否则,从2到它的平方根遍历,如果有一个数能整除它,就返回False。如果遍历完了没有找到能整除它的数,就返回True。
1.希尔排序是按照不同步长对元素进行插入排序,当刚开始元素很无序的时候,步长最大,所以插入排序的元素个数很少,速度很快;当元素基本有序了,步长很小,插入排序对于有序的序列效率很高;
2.由于多次插入排序,一次插入排序是稳定的,不会改变相同元素的相对顺序,但在不同的插入排序过程中,相同的元素可能在各自的插入排序中移动,最后其稳定性就会被打乱,所以,希尔排序是不稳定的。
3.最坏时间复杂度为O(n^2)。
大家也可以关注我的公众号:Python极客社区,在我的公众号里,经常会分享很多Python的文章,而且也分享了很多工具、学习资源等。另外回复“电子书”还可以获取十本我精心收集的Python电子书。