Art*_*lin 4 python primes boolean
好吧,我承认我是个菜鸟,我一直在学习关于 udemy 的编程课程。问题是要求编写一个函数来查找直到给定数字的所有素数。所以我开始编写以下代码来提取不偶数的数字,以及不能被 3 整除的数字,只是为了开始:
def count_primes(num):
num_list5 = []
for i in range(num + 1):
print(i)
if i % 2 != 0 or i % 3 != 0:
num_list5.append(i)
return num_list5
Run Code Online (Sandbox Code Playgroud)
当我用 100 的数字调用函数时,例如:
count_primes(100)
在输出中,我得到num_list5
显示范围内的所有数字,除了 6 和 6 的倍数:
[1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 13, 14 ...]
就像 if 语句在这里执行 AND 操作一样......因为 6 可以被 2 AND 3 整除。这是错误还是什么?或者我没有正确理解和/或操作?
奇怪的是,它曾经在某一时刻工作,在进行更改并恢复之后,它开始这样做......
我正在使用 VSCode 和 Jupyter 笔记本,并在 Ubuntu 20.04 上尝试了 Python 3.8.5 64 位和 3.9.4 64 位
小智 8
i % 2 != 0 or i % 3 != 0
等于 not (i % 2 == 0 and i % 3 == 0)
(德摩根定律)
它应该是 i % 2 != 0 and i % 3 != 0