m0_56575272 2021-05-28 10:25 采纳率: 100%
浏览 24
已结题

麻烦各位大佬帮忙看看

【质因数分解】对用户输入的一个大于10的整数进行质因数分解。假设输入符合要求,程序显示该数的质因数分解结果,且各个质因数从小到大排列。

程序的一次执行过程如下图所示:

如果用户输入的是一个质数,则程序显示1乘以该数。下图是用户输入一个质数的分解结果:

程序代码如下:

#质因数分解

import math

x = int(input("请输入一个大于10的整数:"))

primes =[ ___1___  for p in range(2, x//2+1) if 0 not in[p%d for d in range(2, int(math.sqrt(p))+1)] ]

factorList = []

y = x

for i in primes:

   while y % i == 0:

       factorList.append(i) 

       y = y // i

if factorList == []:

   print("%d=%d*%d" % ___2___)

else:

   s = "*".join( map( ___3___ , factorList) ) 

   print("%d=%s" % (x,s)) 

#结束

 

  • 写回答

2条回答 默认 最新

  • CSDN专家-黄老师 2021-05-28 11:03
    关注
    def reduceNum(n):
        
        '''策略:求解n的因式分解,首先从2开始到n遍历,
        如果n%某一个数的结果是整数,则打印出该数,同时n=n/该数
        直到n==1结束
        '''
        a='{} = '.format(n)
     
        #判断n是否为正整数
        if not isinstance(n, int) or n <= 0 :
            print ('请输入一个正确的数字 !')
            exit(0)
            
        #排除n的值为1 的特殊情况   
        elif n in [1] :        
            a+='{}'.format(n)
     
        #n的值不为1的正整数   
        while n not in [1] : # 循环保证递归
            for temp in range(2, n + 1) :
                
                if n % temp == 0:#更改n的值,同时记录下它的因数并跳出for循环
                    n =int( n/temp)# n 等于 n/temp
                    
                    if n == 1: #此时n的值大小和因数相同,作为末尾因数
                        a+=str(temp)
                        
                    else : # index 一定是因数                    
                        a+='{} *'.format(temp)
                        
                    break
        print(a)
                
    reduceNum(999)
    reduceNum(90)

    参考一下,希望对你有帮助

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 11月13日
  • 已采纳回答 11月5日

悬赏问题

  • ¥66 定制开发肯德基自动化网站下单软件
  • ¥20 vscode虚拟环境依赖包未安装
  • ¥15 odoo17关于owl开发js代码问题
  • ¥15 光纤中多普勒频移公式的推导
  • ¥15 怎么制作一个人脸识别门禁系统
  • ¥20 大华dss监控平台网络关闭登不进去
  • ¥15 请使用蚁群算法解决下列问题,并给出我完整的代码
  • ¥20 关于php录入完成后,批量更新数据库
  • ¥15 请教往复密封润滑问题
  • ¥15 cocos creator发布ios包