用Python解答ProjectEuler問題(3)
E003
The prime factors of 13195 are 5, 7, 13 and 29.
The prime factors of 13195 are 5, 7, 13 and 29.
What is the largest prime factor of the number 600851475143 ?
求600851475143的最大質因子。
今天重寫了求素數的方法
# -*- coding:utf-8 -*- class Prime: primes = [2] def __init__(self, maxpri): self.expandList(maxpri) def testNumber(self, x): """ 根據已知素數表用篩法進行測試x """ assert type(1)==type(x) #x必須是整數 if x<2: return False isPri = True for p in self.primes: if p*p>x: #只需測試被sqrt(x)以內的素數整除 break elif 0==x%p: #是合數 isPri = False break return isPri def expandList(self, maxpri, length=None): """ 擴充套件素數表到接近maxpri,或個數達到length """ x = self.primes[-1] while (True): x += 1 if self.testNumber(x): # Python中改寫類成員需要用self.__class__.引用 self.__class__.primes.append(x) #是否達到目標並退出 if maxpri and x>=maxpri: break if length and len(self.primes)>=length: break if __name__ == `__main__`: max = 100 pri = Prime(max*max) print str(pri.primes)
有了上面求素數的程式碼,現在我們可以這樣解決問題
from prime import Prime from math import sqrt, floor def problem3(number): lmt = floor(sqrt(number)) factor = 0 pri = Prime(lmt) for p in pri.primes: if 0==number%p: factor = p return factor if __name__ == `__main__`: print str(problem3(600851475143))
相關文章
- Python list,dict問題解答Python
- Python程式設計常見問題與解答Python程式設計
- JVM問題及解答JVM
- Python工程師必看的面試問題與解答(中)Python工程師面試
- APatch常見問題解答
- RapidWeaver 8常見問題解答API
- Ubuntu 常見問題和解答Ubuntu
- 軟體新人問題解答(一)
- Docker面試問題與解答Docker面試
- Python資料分析初體驗,需要解答的三大問題!Python
- NSIS 之 NsDialogs 常見問題解答
- ViewModel和LiveData問題思考與解答ViewLiveData
- [譯] HTTP/2 常見問題解答HTTP
- 微課|玩轉Python輕鬆過二級:第3章課後習題解答3Python
- C# 面試問題與解答1C#面試
- 小遊戲引擎常見問題解答遊戲引擎
- Rhinoceros 6 for Mac的常見問題解答ROSMac
- Screaming Frog SEO Spider常見問題解答IDE
- 關於CleanMyMac常見問題與解答Mac
- 用自洽性提升大模型推理能力,谷歌解答基準中75%數學問題,比GPT-3提升20%大模型谷歌GPT
- SOLIDWORKS認證考試常見問題解答Solid
- 業務規則的常見問題解答
- 犀牛Rhinoceros 6 for Mac的常見問題解答ROSMac
- HTTPS總結+相關面試問題解答HTTP面試
- 提出問題,解答問題!這才是理解程式碼設計的正確方法
- 關於“等保保護”最常見問題解答!
- GNU GPL 許可證常見問題解答(三)
- 域名解析常見問題盤點及解答
- MongoDB常見問題解答:時間與時區MongoDB
- hybris backoffice建立product遇到的synchronization問題和解答
- 全志RV1108常見問題操作解答
- vue-cli多頁面history模式-問題解答Vue模式
- 30 個 Openstack 經典面試問題和解答面試
- 37個 JavaScript 基本面試問題和解答JavaScript面試
- 面試被問TopK問題,可以這樣優雅的解答面試TopK
- [提問交流]OneThink學習日記(更有很多問題求解答!)
- 微課|玩轉Python輕鬆過二級:第2章課後習題解答(3課,79題)Python
- 微課|玩轉Python輕鬆過二級:第3章課後習題解答4Python
- 微課|玩轉Python輕鬆過二級:第3章課後習題解答2Python