python将一个正整数分解质因数

将一个正整数分解质因数

  • 1. 解法一
  • 2. 解法二
  • 3. 解法三
  • 4. 解法四

例如输入90,输出:90=2*3*3*5

对n进行分解质因数,应先找到一个最小的质数i,然后按下述步骤完成:
(1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。
(2)如果n<>i,但n能被i整除,则应打印出i的值,并用n除以i的商,作为新的正整数你n,重复执行第一步。
(3)如果n不能被i整除,则用i+1作为i的值,重复执行第一步。

1. 解法一

n = int(input("请输入一个数:"))
print(n,'=',end="")
i = 2
while i <= n:
    if i == n:
        print(i, end="")
        break
    elif n % i == 0:
        print(i, end="*")
        n = n / i
    else:
        i += 1

2. 解法二

n = int(input("请输入一个数:"))
print(n,' = ',end="")
if n <= 0:
    print("你输的数字小于零啦")
i=2
if n!=1:
    while i!= n:
        if n % i == 0:
            print(i,end=' * ')
            n = n // i
        else:
            i+=1
    print(i,end='')
else:
    print(n)

3. 解法三

num = int(input('请输入一个数:'))

a = '{0}='.format(num)
flag = True
while flag:
    for i in range(2,num+1):
        # if not num % i:
        if num % i == 0:
            if i == num:
                flag = False
                a = a + str(i)
            else:
                a = a + str(i) + '*'
                num = num//i
            break
print(a)
num = int(input('请输入一个数:'))

def fenjie(num):
    a = '{0}='.format(num)
    flag = True
    while flag:
        for i in range(2,num+1):
            if not num % i:
                if i == num:
                    flag = False
                    a = a + str(i)
                else:
                    a = a + str(i) + '*'
                    num = num//i
                break
    return a
print(fenjie(num))

4. 解法四

# ① 询问输入
x = int(input("请输入一个数:"))
print(x ,'= ',end=' ')
# ② 进行分解
temp = [] 
while x!=1:
    for i in range(2,x+1):
        if x % i == 0:
            temp.append(i) 
            x = x // i
            break
# ②循环遍历输出
for i in range(len(temp)):
    if i!=len(temp)-1:
        print("%d * " % temp[i],end='')
    else:
        print("%d " % temp[i],end='')

输出结果如下所示:
python将一个正整数分解质因数_第1张图片
python将一个正整数分解质因数_第2张图片

你可能感兴趣的:(python练习题,python)