RUNOOB python练习题 14

用来练手的python 练习题其十四,原链接 : python练习实例14

题干 : 将一个正整数分解质因数。例如:输入90,打印出90=233*5。

拿到题目,我们就可以看出,首先我们需要一个函数来判断某一正整数是否为质数,然后还需要一个函数来分解质因数。显然,找到正整数的其中一个质因数是很简单的,但到这一步还不能帮助我们找到正整数全部的质因数。例如题干中的例子90,我们找到了第一个质因数22290=2∗4590 = 2 * 4590=245,那么问题就转化成了45分解质因数,45=3∗15,15=3∗545 = 3 * 15, 15 = 3*545=315,15=35,直到最后,所有的因数都是质数。

显而易见,我们可以利用递归,将正整数分解质因数的问题转化为找到正整数的质因数及非质因数,并对非质因数再进行分解质因数直到所有的因数都变为了质因数,递归结束,下面为源代码:

import numpy as np
from math import sqrt# 判断是否是质数
def prime_number(num):bound_grand = int(sqrt(num))if num == 2 or num == 3:return True#在2-根号num之间如果存在num的因数,则num不是素数for i in range(2,bound_grand+1):if num%i == 0:return Falseelif i == bound_grand:return True
# 使用递归分解质因数
def find_prime_factor(num):bound_num = int(sqrt(num))# 如果num已经是质数了,递归结束if prime_number(num):print(num)returnfor i in range(2, bound_num+1):# 如果i是num的质因数if num%i == 0 and prime_number(i):print(i)num = int(num/i)# 对非质因数分解质因数find_prime_factor(num)break

代码包含了两个函数,一个函数用于判断某正整数是否为质数。另外一个函数使用递归调用分解质因数。

使用结果例如下:

find_prime_factor(10000)

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/386942.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

关于作者

北京某公司渗透工程师 Web渗透、PHP/Java代码审计、安全研究 想换一份工作,求推荐。转载于:https://www.cnblogs.com/dgjnszf/p/10779097.html

centos7通过yum安装JDK1.8

安装之前先检查一下系统有没有自带open-jdk 命令: rpm -qa |grep java rpm -qa |grep jdk rpm -qa |grep gcj 如果没有输入信息表示没有安装。 如果安装可以使用rpm -qa | grep java | xargs rpm -e --nodeps 批量卸载所有带有Java的文件 这句命令的关键字是j…

一个电脑的重装到java开发环境安装配置的全过程

刚拿到一台别人用过的电脑。看着c盘爆满,而且用了还是windows7操作系统,强迫症发作马上就准备重装系统。 之前换固态使用wepe制作U盘启动盘装系统的步骤和过程全部忘记的,贼尴尬。 同事都看不过眼了 使用UltraISO这个软件帮我做了U盘启动盘 …

RUNOOB python练习题17

用来练手的python 练习题其十三,原链接 : python练习实例17 题干 : 输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数 这个例题让我回忆起了远古的记忆,python str类的 isalpha,isspace,isdigit方法。这些方法通过比较ASC…

Centos7下使用ELK(Elasticsearch + Logstash + Kibana)搭建日志集中分析平台

Centos7下使用ELK(Elasticsearch Logstash Kibana)搭建日志集中分析平台 日志监控和分析在保障业务稳定运行时,起到了很重要的作用,不过一般情况下日志都分散在各个生产服务器,且开发人员无法登陆生产服务器&#xf…

叠数的加法与字符串 RUNOOB python练习题 18

用来练手的python 练习题其十八,原链接 : python练习实例18 题干: 求saaaaaaaaaaaa…a的值,其中a是一个数字。例如222222222222222(此时共有5个数相加),几个数相加由键盘控制 这种类型的叠数相加,让我不禁联想到了python中&…

wget在linux中安装出现错误解决办法

在使用wget命令报错 certificate common name xxx doesnt match requestde host name,我们一般的解决办法是查找下载地址,但是有时候更换地址也会发生错误, wget http://www.monkey.org/~provos/libevent-1.2.tar.gz 报如下错: er…

linux下elasticsearch的安装

首先安装jdk 下载elasticsearch wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.2.4.tar.gz 解压 tar -zxvf elasticsearch-6.2.4.tar.gz 移动项目到/usr目录下 mv elasticsearch-6.2.4 /usr 启动es /usr/elasticsearch-6.4.2/bin/elastic…

RUNOOB python练习题19 找出1000以内的所有完数

用来练手的python 练习题,原链接 : python练习实例19 题干: 一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如61+2+3.编程找出1000以内的所有完数。 首先我们要理解,什么是完数。根据百度词条&am…

金蝶学习网站

https //vip.kingdee.com/转载于:https://www.cnblogs.com/RogerLu/p/10784498.html

Kibana linux下安装

1、kibana简介 Kibana是一个开源的分析与可视化平台,设计出来用于和Elasticsearch一起使用的。你可以用kibana搜索、查看、交互存放在Elasticsearch索引里的数据,使用各种不同的图表、表格、地图等kibana能够很轻易地展示高级数据分析与可视化。 Kiban…

RUNOOB python练习题 23 使用*号输出菱形

用来练手的python练习题,原题链接:python练习实例23 题干: 这个题目还是利用python字符串的乘法等性质,通过循环打印出我们想要的图形。 源代码如下: for i in range(4):character " " * (3-i) "*" * ((i1)*2-1)print(charact…

nohup /dev/null 21 含义详解

nohup命令:如果你正在运行一个进程,而且你觉得在退出帐户时该进程还不会结束,那么可以使用nohup命令。该命令可以在你退出帐户/关闭终端之后继续运行相应的进程。nohup就是不挂起的意思( n ohang up)。 该命令的一般形式为:nohup…

RUNOOB python练习题24 斐波那契数列的衍生问题

用来练手的python练习题,原题链接 : python练习实例24 题干: 有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13…求出这个数列的前20项之和。 拿到题目观察数列,我们不难发现,…

企业邮箱服务器如何设置?

企业邮箱是邮箱服务商面向企业客户开发的邮箱系统,采取管理员机制,企业使用自己的官网域名作为邮箱地址的后缀,由管理员为员工创建邮箱空间,并分配权限。在员工办公的场景中,为了收发邮件方便,一般的都会使…

elasticsearch6.2.4 与logstash与kibana版本6.2.4搭建同步使用

解压 tar -zxvf kibana-6.2.4-linux-x86_64.tar.gz 创建快捷方式 ln -s kibana-6.2.4-linux-x86_64 kibana /app/elasticsearch/kibana/bin #端口 server.port: 5601 #主机 server.host: "10.118.182.85" #es的地址 elasticsearch.url: http://10.118.182…

RUNOOB python练习题25 递归实现阶乘

用来练手的python练习题,原题链接: python练习实例25 题干 : 求12!3!…20!的和。 题干要求我们实现一个阶乘的求和,显而易见的,我们可以使用递归来实现阶乘,再使用循环语句对这些阶乘就行求和。源代码如下: # 求阶乘 def facto…

浅析JavaScript解析赋值、浅拷贝和深拷贝的区别

文章首发于sau交流学习社区 一、赋值(Copy) 赋值是将某一数值或对象赋给某个变量的过程,分为: 1、基本数据类型:赋值,赋值之后两个变量互不影响 2、引用数据类型:赋**址**,两个变量具…

RUNOOB python练习题27 递归逆向输出字符串

用来练手的python练习题,原题链接: python练习实例27 题干: 利用递归函数调用方式,将所输入的5个字符,以相反顺序打印出来。 实际要实现这个功能很简单,我们只需要反向遍历字符串即可。源代码如下: def p_inverse_boucle(my_st…

ELK 6.2.4搭建

开源实时日志分析ELK平台能够完美的解决我们上述的问题,ELK由ElasticSearch、Logstash和Kiabana三个开源工具组成。 官方网站:https://www.elastic.co/products Elasticsearch是个开源分布式搜索引擎,它的特点有:分布式&#xff…