编写python程序,10000以内所有素数,完成以下统计

1、按个位数字,统计个位分别为1-9的素数个位
2、按以100为单位的区间范围统计,即统计0-99、100-199、200-299……各区间的素数个数?
3、计算上述各区间的和和平均数

该回答引用ChatGPT
在这个程序中,我们首先定义了一个判断是否为素数的函数is_prime,然后在主函数中调用该函数对所有在10000以内的数字进行素数判断,并统计其中素数的个数。最后,我们打印出每个任务的结果。



def is_prime(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 main():
    count_list = [0] * 9
    interval_count_list = [0] * 10
    interval = 100

    for i in range(2, 10000):
        if is_prime(i):
            count_list[i % 10 - 1] += 1
            interval_count_list[i // interval] += 1

    print("按个位数字统计的素数个位为:")
    for i in range(9):
        print("个位数字为", i + 1, "的素数有", count_list[i], "个")

    print("\n按以100为单位的区间范围统计的素数个数为:")
    for i in range(10):
        print("区间", i * interval, "-", (i + 1) * interval - 1, "的素数个数为", interval_count_list[i])

    sum_of_intervals = sum(interval_count_list)
    avg_of_intervals = sum_of_intervals / len(interval_count_list)
    print("\n所有区间的素数和为", sum_of_intervals)
    print("所有区间的素数平均数为", avg_of_intervals)

if __name__ == "__main__":
    main()


回答不易,求求您采纳点赞哦 感激不尽

可以使用python列表推导式编写算法,计算10000以内所有素数,然后根据你提出的条件,做相应的计算。例如:


# 获取10000以内的所有素数
prime_numbers = [x for x in range(2, 10000) if all(x % y != 0 for y in range(2, x))]

# 按个位数字,统计个位分别为1-9的素数个位
ones_counts = [sum(1 for num in prime_numbers if num % 10 == i) for i in range(1,10)]

# 按以100为单位的区间范围统计
interval_counts = [sum(1 for num in prime_numbers if x <= num < x + 100) for x in range(0, 10000, 100)]

# 计算上述各区间的和和平均数
sum_of_intervals = sum(interval_counts)
average_of_intervals = sum_of_intervals / float(len(interval_counts))