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日

悬赏问题

  • ¥15 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错
  • ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?
  • ¥15 vite+vue3+plyr播放本地public文件夹下视频无法加载
  • ¥15 c#逐行读取txt文本,但是每一行里面数据之间空格数量不同
  • ¥50 如何openEuler 22.03上安装配置drbd
  • ¥20 ING91680C BLE5.3 芯片怎么实现串口收发数据
  • ¥15 无线连接树莓派,无法执行update,如何解决?(相关搜索:软件下载)
  • ¥15 Windows11, backspace, enter, space键失灵