Python【每日一问】27
问:
【基础题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)
Python【每日一问】27的更多相关文章
- [python每日一练]--0012:敏感词过滤 type2
题目链接:https://github.com/Show-Me-the-Code/show-me-the-code代码github链接:https://github.com/wjsaya/python ...
- Python每日一练(1):计算文件夹内各个文章中出现次数最多的单词
#coding:utf-8 import os,re path = 'test' files = os.listdir(path) def count_word(words): dic = {} ma ...
- python每日一函数 - divmod数字处理函数
python每日一函数 - divmod数字处理函数 divmod(a,b)函数 中文说明: divmod(a,b)方法返回的是a//b(除法取整)以及a对b的余数 返回结果类型为tuple 参数: ...
- 每日一问:Android 消息机制,我有必要再讲一次!
坚持原创日更,短平快的 Android 进阶系列,敬请直接在微信公众号搜索:nanchen,直接关注并设为星标,精彩不容错过. 我 17 年的 面试系列,曾写过一篇名为:Android 面试(五):探 ...
- 每日一问:谈谈 volatile 关键字
这是 wanAndroid 每日一问中的一道题,下面我们来尝试解答一下. 讲讲并发专题 volatile,synchronize,CAS,happens before, lost wake up 为了 ...
- 每日一问:讲讲 Java 虚拟机的垃圾回收
昨天我们用比较精简的文字讲了 Java 虚拟机结构,没看过的可以直接从这里查看: 每日一问:你了解 Java 虚拟机结构么? 今天我们必须来看看 Java 虚拟机的垃圾回收算法是怎样的.不过在开始之前 ...
- 每日一问:你了解 Java 虚拟机结构么?
对于从事 C/C++ 程序员开发的小伙伴来说,在内存管理领域非常头疼,因为他们总是需要对每一个 new 操作去写配对的 delete/free 代码.而对于我们 Android 乃至 Java 程序员 ...
- 每日一问:LayoutParams 你知道多少?
前面的文章中着重讲解了 View 的测量流程.其中我提到了一句非常重要的话:View 的测量匡高是由父控件的 MeasureSpec 和 View 自身的 `LayoutParams 共同决定的.我们 ...
- 每日一问:简述 View 的绘制流程
Android 开发中经常需要用一些自定义 View 去满足产品和设计的脑洞,所以 View 的绘制流程至关重要.网上目前有非常多这方面的资料,但最好的方式还是直接跟着源码进行解读,每日一问系列一直追 ...
- python每日一练:0007题
第 0007 题: 有个目录,里面是你自己写过的程序,统计一下你写过多少行代码.包括空行和注释,但是要分别列出来. # -*- coding:utf-8 -*- import os def count ...
随机推荐
- .net core 加载项目提示项目文件不完整,dotnet提示不是内部或外部命令
记录一下 在系统环境变量中PATH添加如下: C:\Windows;C:\Windows\System32\System32\Wbem;C:\Windows\System32;
- angular 监听离开页面执行相关操作
$scope.$on("$destroy", function() { //...})
- js内存空间
堆数据结构 堆数据结构是一种树状结构.它的存取数据的方式与书架和书非常相似.我们只需要知道书的名字就可以直接取出书了,并不需要把上面的书取出来.JSON格式的数据中,我们存储的key-value可以是 ...
- 实验吧——忘记密码了(vim备份文件,临时文件(交换文件))
题目地址:http://ctf5.shiyanbar.com/10/upload/step1.php 前些天突然发现个游戏,于是浪费了好多时间,终于还是忍住了,现在专心学习,从今天开始正式写些学习笔记 ...
- Android源码分析(十三)----SystemUI下拉状态栏如何添加快捷开关
一:如何添加快捷开关 源码路径:frameworks/base/packages/SystemUI/res/values/config.xml 添加headset快捷开关,参考如下修改. Index: ...
- 小程序插件集成functional-page-navigator真机调试报错
小程序集成插件 插件里面有functional-page-navigator标签 一."小程序开发版已过期,请重新扫码连接" 真机在调用插件的时候报错 "小程序开发版已过 ...
- Java数据类型(2)------自动封装拆箱
目的: 自动装箱和拆箱从Java 1.5开始引入,目的是将原始类型值转自动地转换成对应的对象,以使用对象的API和引用类型操作.自动装箱与拆箱的机制可以让我们在Java的变量赋值或者是方法调用等情况下 ...
- nginx的 ngx.var ngx.ctx ngx.req
ngx.var 是获取 Nginx 的变量,需要经历字符串 hash.hash 表查找等过程. ngx.ctx 仅仅是一个 Lua table 而已,它的引用存放在 ngx_lua 的模块上下文(ct ...
- vue2.0 实现导航守卫(路由守卫)---登录验证
路由跳转前做一些验证,比如登录验证,是网站中的普遍需求. 对此,vue-route 提供的 beforeRouteUpdate 可以方便地实现导航守卫(navigation-guards). 导航守卫 ...
- LOJ 3160: 「NOI2019」斗主地
题目传送门:LOJ #3160. 简要题意: 有一个长度为 \(n\) 的序列 \(a\),初始时 \(a_i=i\) 或 \(a_i=i^2\),这取决于 \(\mathrm{type}\) 的值. ...