酷代码 AI
菜单
服务商
DeepSeek字节豆包
更多选项

Python实现埃拉托斯特尼筛法求100以内素数及个数统计

我来帮助你用筛数法(埃拉托斯特尼筛法)找出100以内的所有素数。 ## 🧮 筛数法实现代码 ```python def sieve_of_eratosthenes(n): # 创建一个布尔数组,初始都标记为True(假设都是素数) is_prime = [True] * (n + 1) is_prime[0] = is_prime[1] = False # 0和1不是素数 # 筛法核心:从2开始,将所有倍数标记为非素数 for i in range(2, int(n ** 0.5) + 1): if is_prime[i]: # 将i的倍数标记为非素数 for j in range(i * i, n + 1, i): is_prime[j] = False # 收集所有素数 primes = [i for i in range(2, n + 1) if is_prime[i]] return primes # 找出100以内的素数 primes = sieve_of_eratosthenes(100) # 输出素数(用空格分隔) print(' '.join(map(str, primes))) # 输出素数个数 print(len(primes)) ``` ## 📊 代码解析 **筛法核心原理:** - 从2开始,将每个素数的倍数标记为合数 - 优化点:只需要检查到√n即可 **关键步骤:** 1. 创建标记数组,初始全为素数(True) 2. 从2开始,标记所有倍数为非素数 3. 统计剩余标记为True的数字 **输出结果:** - 第一行:2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97 - 第二行:25 ######[AI问答 | 433点数解答 | 2026-06-15 20:35:28]

相关提问
本站限时免费提问中
实用工具查看更多
Linux在线手册 [开发类]
Jquery在线手册 [开发类]
今日油价 [生活类]
图片互转base64 [开发类]
时间转换器 [开发类]