问:

【基础题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("")
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) == ["", "", "", ""], "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)

最新文章

  1. yield生成器及字符串的格式化
  2. 3、Redis 基础
  3. 利用 druid 解析器解析SQL
  4. Servlet请求头response应用简单案例
  5. 利用WinPcap模拟网络包伪造飞秋闪屏报文
  6. 【JUnit 报错】java.lang.NoClassDefFoundError: org/apache/logging/log4j/message/Message
  7. bash变量操作
  8. C语言 类型
  9. enum 与 #define
  10. “假如花千骨在杭州拍摄” 主题Cosplay
  11. (原创)性能测试中,Oracle服务器定位CPU使用率高的瓶颈(SQL)
  12. 解决python第三方插件下载慢的方法
  13. java实现无序数组结构
  14. JSVC技术
  15. 如何恢复windows的exe文件的默认打开方式
  16. SpringMVC系列(三):REST风格
  17. Mysql5.5升级到5.6步骤详解 小版本大版本
  18. Centos 7安装Python3.6
  19. WPF 动画 和 色彩 的随笔
  20. 本地代码同步到github

热门文章

  1. oracle 获取表\视图的列名
  2. svg图片拖动与缩放
  3. IIS配置——常见问题
  4. 北理工机器人队RM视觉组学习参考汇总(持续更新中)
  5. java内存溢出实战
  6. SpringBoot自动装配原理解析
  7. Android源码分析(十六)----adb shell 命令进行OTA升级
  8. LINUX中ORACLE 11.2.0.1 升级到11.2.0.4
  9. ETL中获取公共时间参数变量释义
  10. Nginx+lamp构建动静分离项目