美文网首页
习题13-14

习题13-14

作者: 小董不太懂 | 来源:发表于2019-08-18 16:09 被阅读0次
  • 打印水仙花数··

水仙花数是指一个 n 位数(n≥3 ),它的每个位上的数字的 n 次幂之和等于它本身。
例如:153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。
利用for循环控制100-999个数,每个数分解出个位,十位,百位
方法一

'''
python 打印出所有的"水仙花数"

程序分析:
#水仙花数是指一个 n 位数(n≥3 ),它的每个位上的数字的 n 次幂之和等于它本身。
例如:153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。
利用for循环控制100-999个数,每个数分解出个位,十位,百位

'''
import time
start_time = time.time()
for i in range(1,10):
    for j in range(0,10):
        for k in range(10):
            if i**3 + j**3 + k**3 == i*100 + j*10 + k:
                print('{}{}{}'.format(i,j,k))
end_time = time.time()
print('用时{}秒'.format(end_time-start_time))

输出结果:

D:\anaconda\python.exe D:/bilibili大学/python经典习题100道/习题13.py
153
370
371
407
用时0.0009970664978027344秒

Process finished with exit code 0

方法二

import time
start_time = time.time()
for s in range(100,1000):
    num = str(s)
    if int(num[0])**3 + int(num[1])**3 + int(num[2])**3 == s:
        print(s)
end_time = time.time()
print('用时{}秒'.format(end_time-start_time))

输出结果:

D:\anaconda\python.exe D:/bilibili大学/python经典习题100道/习题13.py
153
370
371
407
用时0.0019953250885009766秒

Process finished with exit code 0

  • 题目:将一个正整数分解质因数。

例如:输入90, 打印出90 = 2 * 3 * 3 * 5。程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:

  • 如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。
  • 如果n>k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n,重复执行第一步。
  • 如果n不能被k整除,则用k+1作为k的值,重复执行第一步。
'''
题目:将一个正整数分解质因数。例如:输入90, 打印出90 = 2 * 3 * 3 * 5。
程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:
(1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。
(2)如果n>k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n,重复执行第一步。
(3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。
'''
n = int(input('请输入一个数字:'))
if n == 1:
    print('i = 1')
if n > 1:
    li = []
    for i in range(2,n+1):
        if n%i == 0:
            n = n/i
            if n == 1:
                print(i,end='')
            else:
                li.append(i)
print(list)
print('*'.join('%s' %id for id in li))

这样也可以:

n = int(input('请输入一个数字:'))
if n == 1:
    print('i = 1')
if n > 1:
    li = []
    for i in range(2,n+1):
        if n%i == 0:
            n = n/i
            if n == 1:
                print(i,end='')
            else:
                li.append(str(i))
print(list)
print('*'.join(li))

输出结果:

D:\anaconda\python.exe D:/bilibili大学/python经典习题100道/习题14.py
请输入一个数字:90
<class 'list'>
2*3*5

Process finished with exit code 0

join()函数的用法参考:https://blog.csdn.net/TCatTime/article/details/85254896

相关文章

网友评论

      本文标题:习题13-14

      本文链接:https://www.haomeiwen.com/subject/afhrsctx.html