作者 icps (虹月) 看板 Python
標題 Re: [問題] 十進位數字轉換成任何進位的數字
時間 Sun Jan 13 12:16:40 2013
───────────────────────────────────────
以下按照D大建議試做的 (新手寫的很怪見諒XD)
from math import sqrt
m=int(raw_input('number1:'))
n=int(raw_input('number2:'))
if n<m:
s=n
n=m
m=s
def is_prime(n):
for i in range(2, int(sqrt(n) + 1)):
if n%i==0:
return False
return True
def max_prime(m,n):
while m<n:
if is_prime(n):
return n
if (n-1)%2==1:
return max_prime(m,n-1)
n=n-2
return -1
print max_prime(m,n)
--
變更之前
number1:10
number2:99999999
99999989
25.7984983845 <===花的時間
--
變更之後
number1:10
number2:99999999
99999989
0.00457191913143 <===== 秒殺XD
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 118.166.93.19
※ 編輯: icps 來自: 118.166.93.19 (01/14 03:07)
※ 編輯: icps 來自: 118.166.93.19 (01/14 03:08)
最小
def is_prime(n):
for i in range(2,int(sqrt(n) + 1)):
if n % i==0:
return False
return True
def min_prime(m,n):
while m<n:
if is_prime(m):
return m
if (m-1)%2==1:
return min_prime(m+1,n)
m=m+2
return -1
print min_prime(m,n)
※ 編輯: icps 來自: 118.166.93.19 (01/14 13:50)
推 yuxio:在python, 兩個數的交換可以這麼寫 m,n = n,m 01/14 14:35
→ LearnRPG:python 有這麼快? 一億筆範圍的資料0.004 秒? 單位是?? 01/14 14:49
推 mikapauli:一億聽起來就很小... 01/14 14:52
→ LearnRPG:我單機跑C 光一億次迴圈不做任何事情都要 0.249秒了 orz 01/14 15:44
→ LearnRPG:可能是我 compiler 太差了吧 .... C耶 ... 01/14 15:45
→ LearnRPG:也不能說不做任何事情 有i++就是了 ... 01/14 15:45
→ icps:感謝y大 又學到一個XD 01/14 16:12
→ icps:這邊是取最大 所以不用跑完 從大的往下減 所以時間才那麼短吧 01/14 16:17
→ LearnRPG:喔 sorry 我以為是全部列出來 01/14 16:26