首页 / PYTHON / Python【每日一问】27
Python【每日一问】27
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Python【每日一问】27,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2485字,纯文字阅读大概需要4分钟。
内容图文
![Python【每日一问】27](/upload/InfoBanner/zyjiaocheng/822/55422d8015b84f09b0758451d65f7fb7.jpg)
问:
【基础题1】:将一个正整数分解质因数。例如:输入 90, 打印出 90=2*3*3*5 。
【基础题2】:一个数如果恰好等于它的因子之和,这个数就称为“完数” 。例如6=1+2+3。请找出 1000 以内的所有完数。
【提高题】:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个第二天早上又将剩下的桃子吃掉一半, 又多吃了一个。 以后每天早上都吃了前一天剩下的一半多一个。到第 10 天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少?
答:
基础题1:将一个正整数分解质因数。例如:输入 90, 打印出 90=233*5 。
方法1:
def prime(n): l = [] while n > 1: for i in range(2, n+1): if n % i == 0: n = int(n / i) l.append(i) break return l ? ? while 1: s = eval(input("请输入一个正整数:")) if s > 0: print(s, "=", " * ".join([str(x) for x in prime(s)])) else: print("请输入正确的正整数")
方法2:
def positive_int_split(): num = int(input("Input a positive integer:")) assert num >= 2 print("{}=".format(num), end="") while num != 1: for i in range(2, num + 1): if num % i == 0: num = int(num / i) if num == 1: print(i) else: print("{}*".format(i),end="") break ? ? if __name__ == '__main__': positive_int_split()
方法3:
from time import time def get_positive_prime_factors(the_number): result_list = [] a_number = the_number while True: if a_number % 2 == 0: result_list.append("2") a_number = a_number / 2 else: break prime_factor = 3 while True: if a_number % prime_factor != 0: prime_factor += 2 else: result_list.append(str(prime_factor)) a_number = a_number / prime_factor if a_number == 1: break return result_list ? ? assert get_positive_prime_factors(90) == ["2", "3", "3", "5"], "wrong answer" ? while True: begin = time() user_input = input("请输入要分解的数字:") if user_input == None or user_input == "": break number = int(user_input) prime_factors = get_positive_prime_factors(number) prime_factor_string = "*".join(prime_factors) end = time() duration = end - begin ? print(f"{number}={prime_factor_string}") print(f"{duration}s")
基础题2:一个数如果恰好等于它的因子之和,这个数就称为“完数” 。例如6=1+2+3。请找出 1000 以内的所有完数。
for i in range(1, 1001): list1 = [] for j in range(1, i): if i % j == 0: list1.append(j) ? # sum 函数求和 ? if sum(list1) == i: print("%d是完数,因子是" % i, list1)
提高题:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个第二天早上又将剩下的桃子吃掉一半, 又多吃了一个。 以后每天早上都吃了前一天剩下的一半多一个。到第 10 天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少?
def monkey_peach(n): peach = 1 for i in range(1, n): peach = 2 * (peach + 1) ? print(peach) ? ? monkey_peach(10)
内容总结
以上是互联网集市为您收集整理的Python【每日一问】27全部内容,希望文章能够帮你解决Python【每日一问】27所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。