题目描述:

输入一个正整数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]

```

指导建议:

本题的关键在于判断一个数是否是合数。需要用到求质数的方法,这是编程中比较基础的知识点。建议学习者在掌握了求质数的方法之后再尝试解决本题。本题还可以利用筛法求出所有合数,具体可以自行搜索筛法相关的资料。

版权声明

本文仅代表作者观点,不代表百度立场。
本文系作者授权百度百家发表,未经许可,不得转载。

分享:

扫一扫在手机阅读、分享本文

最近发表

诺砚

这家伙太懒。。。

  • 暂无未发布任何投稿。