关于#python#的问题,请各位专家解答!

定义一个函数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。

  • 你可以看下这个问题的回答https://ask.csdn.net/questions/7413494
  • 除此之外, 这篇博客: Python全栈(二)数据结构和算法之7.选择排序、插入排序和希尔排序的实现中的 算法分析: 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 1.希尔排序是按照不同步长对元素进行插入排序,当刚开始元素很无序的时候,步长最大,所以插入排序的元素个数很少,速度很快;当元素基本有序了,步长很小,插入排序对于有序的序列效率很高;
    2.由于多次插入排序,一次插入排序是稳定的,不会改变相同元素的相对顺序,但在不同的插入排序过程中,相同的元素可能在各自的插入排序中移动,最后其稳定性就会被打乱,所以,希尔排序是不稳定的。
    3.最坏时间复杂度为O(n^2)。
    小编那么拼,赞一个再撤!
    公众号二维码
    大家也可以关注我的公众号:Python极客社区,在我的公众号里,经常会分享很多Python的文章,而且也分享了很多工具、学习资源等。另外回复“电子书”还可以获取十本我精心收集的Python电子书。