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 LiBeAs的带隙等于0.997eV,计算阴离子的N和P
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 来真人,不要ai!matlab有关常微分方程的问题求解决,
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿
  • ¥15 回答4f系统的像差计算
  • ¥15 java如何提取出pdf里的文字?
  • ¥100 求三轴之间相互配合画圆以及直线的算法