将一个正整数分解质因数,例如:输入90,输出233*5
分析:从2开始向数本身遍历,能整除的肯定是最小的质数。
对n进行分解质因数,应先找到一个最小的质数i,然后按下述步骤完成:
(1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。
(2)如果n<>i,但n能被i整除,则应打印出i的值,并用n除以i的商,作为新的正整数你n,重复执行第一步。
(3)如果n不能被i整除,则用i+1作为i的值,重复执行第一步。
# 将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。
n = int(input('请输入需要分解的正数:'))
# 创建一个列表用来存放遍历出来的因数
lt = []
# 给n换个名字记录,便于打印时打印出用户输入的n
m = n
while n > 1:
for i in range(2,n+1):
if n%i==0:
# 记录下用最小因数分解后的n
n = n//i
# 把i转换成str,存到列表,便于后面用join拼接字符串列表
lt.append(str(i))
# 找到一个最小的因数时,就跳出for in循环,开始下一次循环
break
if len(lt) == 1:
print(m,'=','1 ×',m)
else:
s = '×'.join(lt)
print(m,'=',s)
from math import sqrt
while 1:
n=int(input('请输入整数:'))
print ("%d = " %n , end = '')
while 1:
for i in range(2,int(sqrt(n)+1)):
if n%i==0:
print('%d*'%i,end='')
n=int(n/i)
break
else:
print(n)
break
#将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5
#持续找最小的因数
def min_factor(a,factor_list):
for i in range(2,a):
flag=0
if a%i==0:
factor_list.append(i)
min_factor(int(a/i),factor_list)
flag=1
break
if flag==0:
factor_list.append(a)
return factor_list #若把return factor_list写在if里面,因为使用了递归只有在执行最里面的循环时可以返回factor_list,其他循环不满足flag=1都会返回为空,最终返回的是最外面循环的返回值,所以会返回为空。
target=int(input("please input a positive integer:"))
factor_list=[]
print (min_factor(target,factor_list))
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
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)
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))
# ① 询问输入
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='')
1.找一个最小的质数i=2
2.对i进行循环+1,判断i是否能整除a,可以就存到c里面,并让a=a//i
3.重新从2开始循环重复上述步骤
4.实验可以输出正确结果
// An highlighted block
#将一个整数分解质因数
a=int(input("Please input a number:"))
b=a//2
c=[]
for j in range(b+1):
#只需要循环a的一半就可以了
for i in range(2,a):
#质因数从2开始
if a%i==0:
c.append(i)
a=a//i
break
for i in range(len(c)):
print(c[i],'*',end=' ')
print(a)
#a已经被质因整除过最后也变成了质因数
// An highlighted block
#将一个整数分解质因数
a=int(input("Please input a number:"))
b=a//2
c=[]
for j in range(b+1):
#只需要循环a的一半就可以了
for i in range(2,a):
#质因数从2开始
if a%i==0:
c.append(i)
a=a//i
break
for i in range(len(c)):
print(c[i],'*',end=' ')
print(a)
#a已经被质因整除过最后也变成了质因数
这类题有比较多的解析,总的来说就是—能被整除的就是最小质数。
这里从网上搜集了10种方法,大家可以根据相关的代码进行改进。
大家有更好的答案可以留言在评论。