Python练习题:分解质因数(选自蓝桥杯)

题目要求:

要求:求出区间[a,b]中所有整数的质因数分解。
样例输入
3 10
样例输出
3=3
4=22
5=5
6=2
3
7=7
8=222
9=33
10=2
5

代码图:

这里为了思路清晰直接采用定义类方法来实现
在这里插入图片描述

代码如下:
class Fun(object):
    def __init__(self):
        self.lst1=[2]#存放素数
        self.lst2=[]#临时存放分解的质因数
    def main(self):#函数主体
        a,b=map(int,input().split(' '))
        for num1 in range(2,b+1):#收集素数
            count=2
            while count<num1:
                if num1%count==0:
                    break
                count+=1           
                if count==num1:
                    self.lst1.append(num1)
                    
        for num2 in range(a,b+1):#主要输出函数
            if num2 in self.lst1:#如是素数情况下输出
                print('%s=%s'% (num2,num2))
            else:#非素数情况下输出
                self.Deal(num2)#调用Deal函数处理
                str1='*'.join(self.lst2)#将所有质因数转化成字符串方便输出
                print('%s=%s'% (num2,str1))
                self.lst2=[]#清空列表,方便处理下一个数


    def Deal(self,num=2):#处理函数,输如一个数字,获得其全部质因数
        for i in self.lst1:
            if num%i==0:
                self.lst2.append(str(i))
                s=num//i
                if s in self.lst1:
                    self.lst2.append(str(s))
                    break
                else:
                    self.Deal(s)
                    break      
fun=Fun()
fun.main()


运行结果图:

1

发布了66 篇原创文章 · 获赞 7 · 访问量 2400

猜你喜欢

转载自blog.csdn.net/qq_45894553/article/details/104541776