RUNOOB python練習題 14

用來練手的python 練習題其十四,原鏈接 : python練習實例14

題干 : 將一個正整數分解質因數。例如:輸入90,打印出90=233*5。

拿到題目,我們就可以看出,首先我們需要一個函數來判斷某一正整數是否為質數,然后還需要一個函數來分解質因數。顯然,找到正整數的其中一個質因數是很簡單的,但到這一步還不能幫助我們找到正整數全部的質因數。例如題干中的例子90,我們找到了第一個質因數22290=2?4590 = 2 * 4590=2?45,那么問題就轉化成了45分解質因數,45=3?15,15=3?545 = 3 * 15, 15 = 3*545=3?15,15=3?5,直到最后,所有的因數都是質數。

顯而易見,我們可以利用遞歸,將正整數分解質因數的問題轉化為找到正整數的質因數及非質因數,并對非質因數再進行分解質因數直到所有的因數都變為了質因數,遞歸結束,下面為源代碼:

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.pswp.cn/news/386942.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/386942.shtml
英文地址,請注明出處:http://en.pswp.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…