python求区间内所有的素数

这个地方怎么修改啊,为啥这最后的输出结果是这样,目标是输出区间内的所有素数

img

打印不是素数那里放到else分支里面,即当函数is_prime()返回False时打印不是素数。

然后is_prime()函数可以增加对小于2的数,都判定为不是素数,即返回False。

修改如下:

参考链接:



def is_prime(number):
    # https://baike.baidu.com/item/%E8%B4%A8%E6%95%B0/263515
    if number <2 : # 小于2的数判定为不是素数,返回False
        return False
    for num in range(2,number):
        if number%num==0:
            return False
    return True

def print_primes(begin,end):
    for number in range(begin,end+1):
        if is_prime(number):
            print(f"{number} is a prime")
        else: # 当函数is_prime()返回False,则打印不是素数
            print(f"{number} is not a prime")

begin=eval(input("input begin:"))
end =eval(input("input end:"))
print_primes(begin,end)

img

  • 你可以参考下这个问题的回答, 看看是否对你有帮助, 链接: https://ask.csdn.net/questions/7489201
  • 你也可以参考下这篇文章:用Python写一段代码,实现接收用户输入两个的数字并输出数字相加后的结果,要求用户输入任何内容程序不会报错
  • 你还可以看下python参考手册中的 python- 嵌套的列表推导式
  • 除此之外, 这篇博客: 用python统计文件夹下所有类型文件总数中的 第一个,输入地址,返回目录下所有文件类型及其个数 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • import os
    def count_type(path,type_dict):#这里将设置了两个变量,一个路径,一个字典
        for root, dirs, files in os.walk(path):#用walk()函数遍历目录下所有的文件
    
            for name in files:
                type_dict.setdefault(os.path.splitext(name)[1],0)  #用splitext()函数返回文件名的后缀。并且将不同类型的后缀写入字典的key,其values值就是其累计数
    
                type_dict[os.path.splitext(name)[1]] += 1
        return type_dict
    #调用方法
    a={}
    count_type(path_1,a)

    这里面"os.walk(path)“函数主要用于遍历文件目录下的所有文件,一般调用格式都是如上方的"for root, dirs, files in os.walk(path)”,其中path是遍历的路径,root、dirs、files是的含义分别如下:

    • root 所指的是当前正在遍历的这个文件夹的本身的地址;
    • dirs 是一个 list ,内容是该文件夹中所有的目录的名字(不包括子目录);
    • files 同样是 list , 内容是该文件夹中所有的文件(不包括子目录)。

    该函数的详情用法见此链接:菜鸟教程os.walk()详解

    这里的"type_dict.setdefault(key, default=None)"是字典的一种用法,在字典加入新键,如果键重复,则不改变字典。如果键不重复,则加入新键key,且值为默认值None。
    该函数的详情用法见此链接:菜鸟教程setdefault()函数详解

    这里的“os.path.split(path)”函数,作用是分割路径,并返回路径名和文件扩展名的元组

  • 您还可以看一下 黄棒清老师的Python实战量化交易理财系统课程中的 常见的股票技术面量化指标小节, 巩固相关知识点
  • 以下回答由chatgpt基于相关博客总结生成:

    我可以给出下面的Python代码来求解区间内的所有素数:

    def is_prime(n):
        """
        判断n是否是素数的函数
        """
        if n <= 1:
            return False
        for i in range(2, int(n ** 0.5) + 1):
            if n % i == 0:
                return False
        return True
    
    def find_primes(start, end):
        """
        寻找区间[start, end]内的所有素数
        """
        primes = []
        for i in range(start, end + 1):
            if is_prime(i):
                primes.append(i)
        return primes
    

    其中,is_prime()函数用于判断一个数是否是素数,find_primes()函数用于找到区间内的所有素数。具体的实现步骤为:

    1. 在is_prime()函数中,首先判断n是否小于等于1,因为1不是素数。然后,对于2到sqrt(n)之间的每个整数,判断n是否能够被整除,如果可以,就说明n不是素数,返回False;否则,n是素数,返回True。

    2. 在find_primes()函数中,首先定义一个空列表primes来存放素数。然后,循环遍历区间[start, end]内的每个整数i,如果i是素数,则将其加入到primes列表中。最后,返回primes列表。

    这样,就可以用这两个函数来求解区间内的素数了。下面是一些使用示例:

    # 找出[1, 10]内的所有素数
    print(find_primes(1, 10))  # [2, 3, 5, 7]
    
    # 找出[100, 200]内的所有素数
    print(find_primes(100, 200))  # [101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151, 157, 163, 167, 173, 179, 181, 191, 193, 197, 199]
    

    如果输出结果不符合期望,可以检查一下是否正确调用了这两个函数,并且输入的参数是否正确。如果还有问题,可以进一步排查代码实现是否正确。