Python整数因子分解

《计算机算法设计与分析》课后练习题

整数因子分解问题

问题描述:
大于1 的正整数n 可以分解为:n=X1 *X 2 *…*Xm
例如,当n= 12 时,共有8 种不同的分解式:
12= 12;
12=6x2;
12=4x3;
12=3x4;
12=3x2x2;
12=2x6;
12=2x3x2;
12=2x2x3。
编程任务:
对于给定的正整数n,编程计算n 共有多少种不同的分解式。
输入数据第一行有1 个正整数n (1≤n≤2000000000) 。
将计算出的不同的分解式数。
输入 输出
input.txt output.txt
12 8

方法一:

def factorization(n):
    for i in range(2,n):
        if n%i==0:
        #当n%i=0时表示i为n的一个因子
            global count
            count=count+1
            #输出n的一种分解式,用于验证
            print("{}*{}={} count={}".format(i,n//i,n,count))
            #继续分解n的一个因子i
            factorization(i)
#从文件中读出数据
file_readpath = 'input.txt'
with open(file_readpath) as file:
    txt = file.read()
n=eval(txt)

#初始化count=1,代表n=n*1的情况
count=1
factorization(n)
#输出结果用于验证
print("{}共有{}种不同的分解式".format(n,count))

#将结果存入文件output.txt
file_writepath = 'output.txt'
file=open(file_writepath,"w")
file.write(str(count))
file.close()

方法二:

def factorization(n):
    if n == 1:#当商为1时即为已经算出一次分解累计+1
        global count
        count=count+1
    for i in range(2,n+1):#每个数进行遍历
        if n%i == 0:#余数为0时 即为可分解的数
            factorization(n//i)#进行分解
    return count   
#从文件中读出数据
file_readpath = 'input.txt'
with open(file_readpath) as file:
    txt = file.read()
n=eval(txt)

#初始化count=0
count=0
factorization(n)
#输出结果用于验证
print("{}共有{}种不同的分解式".format(n,count))

#将结果存入文件output.txt
file_writepath = 'output.txt'
file=open(file_writepath,"w")
file.write(str(count))
file.close()
发布了28 篇原创文章 · 获赞 4 · 访问量 2496

猜你喜欢

转载自blog.csdn.net/weixin_45050042/article/details/102099498
今日推荐