python 求合数的因数 优化

# coding:utf-8

import math

for i in range(100, 300 + 1):
    for j in range(2, int(math.sqrt(i)) + 1):
        if i % j == 0:
            n = i
            print(j)
    else:
        print(n)

  • 出结果的时候,如果下一个是素数,就会重复输出上一个合数,不知道怎么优化,希望不要重复输出

要求合数的因数,就不能按照判断素数的方法简化循环次数了
你题目的解答代码如下:(如有帮助,望采纳!谢谢! 点击我这个回答右上方的【采纳】按钮)

for i in range(100, 300 + 1):
    lst = []
    for j in range(2, i//2+1):
        if i % j == 0:
            lst.append(j)
    if len(lst)>0:
        print(i, lst)

img

print的意义在哪,是想看到什么信息么,最好在print内添加一些有意义的提示信息之类的

# coding:utf-8
import math
for i in range(100, 300 + 1):
    for j in range(2, i//2+1):
        if i % j == 0:
            print('%d的因素有:%d' % (i, j))

着相了,原来简洁如此