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 ...
随机推荐
- Python: 把txt文件转换成csv
最近在项目上需要批量把txt文件转成成csv文件格式,以前是手动打开excel文件,然后导入txt来生产csv文件,由于这已经变成每周需要做的事情,决定用python自动化脚本来实现,思路: 读取文件 ...
- javascript(五)表达式
表达式 (expression) JavaScript中的一个短语, JavaScript解释器会将其计算(evaluate) 出一 个结果.程序中的常量是最简单的一类表达式.变量名也是一种简单的表达 ...
- Android源码分析(十六)----adb shell 命令进行OTA升级
一: 进入shell命令界面 adb shell 二:创建目录/cache/recovery mkdir /cache/recovery 如果系统中已有此目录,则会提示已存在. 三: 修改文件夹权限 ...
- 0,'0','\0',NULL的区别
0,'0','\0',NULL的区别 1,0是一个值,可以是char ,int ,float,double等类型: 2,'0'是一个字符(char)类型,它的ASCII码值是48: 3,'\0'也是一 ...
- HTTP的发展历史和各个版本差别
HTTP前世今生 1989年,蒂姆·伯纳斯-李发表论文确立了三项关键技术: URI: 统一资源标志符,作为互联网上资源的唯一身份 HTML: 超文本标记语言,描述超文本文档 HTTP: 超文本传输协议 ...
- 微信小程序到底把什么定义为风险内容?
目录 起因 经过和结果 附录: 起因 之前做一个群相册的小程序,因为涉及到图片和评论等内容的发布分享.因此,微信后台要求有一定的内容安全检测能力. 但是,我用别家的内容检测用的好好的,在国庆前被微信警 ...
- JAVA concurrent包下Semaphore、CountDownLatch等用法
CountDownLatch 跟join的区别 CountDownLatch用处跟join很像,但是CountDownLatch更加灵活,如果子线程有多个阶段a.b.c; 那么我们可以实现在a阶段完成 ...
- 阿里云 OSS文件存储挂到云服务器ESC文件系统中
ossfs能让您在Linux系统中,将对象存储OSS的存储空间(Bucket)挂载到本地文件系统中,您能够像操作本地文件一样操作OSS的对象(Object),实现数据的共享. 使用限制 ossfs使用 ...
- Spring的感知能力 Aware
在 Spring 框架中有一个 org.springframework.beans.factory.Aware 接口, Aware 是感知感应的意思,那么此接口的作用就是为 Spring 中的 bea ...
- scikit-learn 中的 KMeans
语法 sklearn.cluster.KMeans(n_clusters=8, # 簇的个数, 默认为 8 init='k-means++', # 初始簇中心的获取方法 n_init=10, # 初始 ...