题目描述:
输入一个正整数n,求出小于等于n的所有合数。
解题思路:
合数是指除了1和本身以外有其他因子的数。因此我们可以从2开始遍历到n,对于每个数i,判断它是否是合数。如果是,就加入到结果列表中。
判断一个数是否是合数,可以用以下方法:从2开始遍历到它的平方根,看是否存在一个因子。如果存在,说明它是合数,直接结束循环即可。
注意,当判断一个数是不是合数时,如果它在之前已经被加入了结果列表中,就不需要再次判断。
代码实现:
```python
def is_prime(num):
if num < 2:
return False
for i in range(2, int(num ** 0.5) 1):
if num % i == 0:
return False
return True
def find_composites(n):
result = []
for i in range(2, n 1):
if i in result:
continue
if not is_prime(i):
result.append(i)
for j in range(i * 2, n 1, i):
result.append(j)
return result
```
测试:
```python
print(find_composites(20)) [4, 6, 8, 9, 10, 12, 14, 15, 16, 18, 20]
```
指导建议:
本题的关键在于判断一个数是否是合数。需要用到求质数的方法,这是编程中比较基础的知识点。建议学习者在掌握了求质数的方法之后再尝试解决本题。本题还可以利用筛法求出所有合数,具体可以自行搜索筛法相关的资料。
版权声明
本文仅代表作者观点,不代表百度立场。
本文系作者授权百度百家发表,未经许可,不得转载。