富富猪猪 发表于 2020-11-29 07:57:46

helphelphelp

问题:不明白为什么'%d'%i end="就可以print出输入的数=x1*x2... 其实就是没看懂三个print后面的意义····· 而且每一次循环都有不同的i 而每一次print都只能print一个i 不明白怎么做到比如 333=3*3*37(这里连续乘了好几个"i")
while 1:
    n = int(input('请输入一个整数:'))
    print('%d='%n,end='')
    while n>1:
      for i in range(2,n+1):
            if n%i==0:
                n=int(n/i)
                if n==1:
                  print('%d'%i,end='')
                else:
                  print('%d*'%i,end='')
                break
print()

还不够好 发表于 2020-11-29 08:36:23

输入333
第一步:3是333的因子--->333 = 3*111(此时n变为111,打印3*)
第二步:3是111的因子 ---->111 = 3*37(此时n变为37,打印3*)
三:      1是37的因子(37是素数,此时n变为1) ----> 打印37(,因为n是一,因此最后一个因子末尾没有乘号)
得到结果333=3*3*37

while 1:
    n = int(input('请输入一个整数:'))
    print('%d='%n,end='')
    while n>1:
      for i in range(2,n+1):
            if n%i==0:   #判断i是否是n的因子
                n=int(n/i)   #如果i是n的因子,求n除因子i后的商   
                if n==1:      #再继续判断该商是否有其他因子,直到该因子为一
                  print('%d'%i,end='')
                else:
                  print('%d*'%i,end='')
                break

富富猪猪 发表于 2020-11-29 09:13:45

还不够好 发表于 2020-11-29 08:36
输入333
第一步:3是333的因子--->333 = 3*111(此时n变为111,打印3*)
第二步:3是111的因子 ---->...

谢谢你!我懂了

富富猪猪 发表于 2020-11-29 11:51:07

还不够好 发表于 2020-11-29 08:36
输入333
第一步:3是333的因子--->333 = 3*111(此时n变为111,打印3*)
第二步:3是111的因子 ---->...

嗨,你能再帮我分析一下一段代码吗?我主要不太懂 l=是什么意思··

from functools import reduce
def sum(a,b):
    return a+b
for i in range(2,1001):
    l =
    for j in range(2,int(i/2+1)):
      if i%j==0:
            l.append(j)
    if i == reduce(sum,l):
      print(i)
      print(l)

lijiachen 发表于 2020-11-29 16:41:29

富富猪猪 发表于 2020-11-29 11:51
嗨,你能再帮我分析一下一段代码吗?我主要不太懂 l=是什么意思··

from functools import reduce ...

l = 是初始化因子列表, 因为所有数都有一个因子1,所以就写进去了
页: [1]
查看完整版本: helphelphelp