x=int(input("五位数"))
list1=[]
list2=[]
for i in range(1,x+1):
if(x%i==0):
if(i%2==1):#奇数因子
list1.append(i)
if(i**0.5%1==0):#平方因子
list2.append(i)
print("奇数因子:")
list1.reverse()
print(list1)
print("平方因子:")
print(list2)
from math import sqrt
n = input("请输入一个5位数:")
while len(n)!=5:
n = input("请输入一个5位数:")
lst = [1]
M = int(n)
for i in range(2,M+1):
if M%i==0:
lst.append(i)
lst.reverse()
print(f'从大到小输出M所有的奇数因子:{lst}')
lst1 = []
for l in lst:
if round(sqrt(l))**2==l:
lst1.append(l)
lst1.reverse()
print(f'刚好是某个数的平方值的子:{lst1}')
n=int(input("请输入5位的正整数:"))
res=[1]
for i in range(2,n//2+1):
if n%i==0:
res.append(i)
res.append(n)
res1=[str(i) for i in res[::1] if i%2==1]
res2=[str(i) for i in res if i**0.5==int(i**0.5)]
print("从大到小奇数因子为:",','.join(res1))
print("从小到大平方值因子为",','.join(res2))
while True:
M = input('请输入一个5位的正整数:')
if M.isnumeric() and int(M)>=10000:
M = int(M)
break
n = [M]
for i in range(1,M//2+1):
if M%i==0:
n.insert(1,i)
print(f'该正整数所有的奇数因子从大到小为:{[i for i in n if i%2==1]}')
print(f'所有因子里是某个数的平方值的因子从小到大为:{[i for i in n[::-1] if i**0.5 in n]}')
结果
请输入一个5位的正整数:50000
该正整数所有的奇数因子从大到小为:[3125, 625, 125, 25, 5, 1]
所有因子里是某个数的平方值的因子从小到大为:[1, 4, 16, 25, 100, 400, 625, 2500,
10000]