编程练习100例-13,14

十三:'''什么是水仙花数?百度一下:水仙花数是指一个 
n 位正整数 ( n≥3 ),它的每个位上的数字的 n 次幂之和等于它本身。
(例如:1^3 + 5^3+ 3^3 = 153)。

Python练习题问题如下:
要求:打印输出所有的"水仙花数"。
Python解题思路分析:
可以利用for循环控制流语句来完成操作。从100-999个数,每个数分解出
个位、十位和百位。'''
import math
for i in range(100,999) :
    x=math.floor(i/100)# floor(x),也写做Floor(x),其功能是“向下取整”,
    y=math.floor((i-x*100)/10)#获得十位数
    #z=i-x*100-y*10
    z=i-math.floor(i/10)*10
    if i==x**3+y**3+z**3:
        print(i,end=',')
十四:
'''什么是分解质因数?我们来百度一下:把一个合数分解成若干个质因数的乘积的形式,即求质因数的过程叫做分解质因数。
Python练习题问题如下:
要求:将一个正整数分解质因数;例如您输入90,分解打印90=2*3*3*5。'''
'''这道题需要分三部分来分解,具体分解说明如下。
1、首先当这个质数恰等于n的情况下,则说明分解质因数的过程已经结束,打印出即可。
2、如果遇到n<>k,但n能被k整除的情况,则应打印出k的值。同时用n除以k的商,作为新的正整数你n,之后再重复执行第一步的操作。
3、如果n不能被k整除时,那么用k+1作为k的值,再来重复执行第一步的操作系统。'''
# !/usr/bin/python

# -*- coding: UTF-8 -*-
num=int(input('请输入:'))
n=num
f=[]#存放质因数
for j in range(int(num/2)+1):#判断次数仅需要数字的一半
    for i in range(2,n):
        t= n % i# i 不能是n本身;取余数
        if t==0:
            f.append(i)
            n=n//i#除以质因数后的n重新进入判断,注意应用两个除号,使n保持整数
            break # 找到一个质因数立即break,防止非质因数1可以整除的数字进入列表
        else:
            pass
print(f)
if len(f)==0:
    print('没有任何质因数')
else:
    f.append(n)#最后一个n=5(此处的n不是一开始的n了)也是质因数
    print(f)
    f.sort()#进行排序

    print('%d=%d'% (num,f[0]),end='')#此处打印出30=2
    for i in range(1,len(f)):
        print('*%d'% f[i],end='')#此处打印出*3*5


猜你喜欢

转载自blog.csdn.net/ai_mackey/article/details/80293269
今日推荐