作者 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)
1F:推 yuxio:在python, 两个数的交换可以这麽写 m,n = n,m 01/14 14:35
2F:→ LearnRPG:python 有这麽快? 一亿笔范围的资料0.004 秒? 单位是?? 01/14 14:49
3F:推 mikapauli:一亿听起来就很小... 01/14 14:52
4F:→ LearnRPG:我单机跑C 光一亿次回圈不做任何事情都要 0.249秒了 orz 01/14 15:44
5F:→ LearnRPG:可能是我 compiler 太差了吧 .... C耶 ... 01/14 15:45
6F:→ LearnRPG:也不能说不做任何事情 有i++就是了 ... 01/14 15:45
7F:→ icps:感谢y大 又学到一个XD 01/14 16:12
8F:→ icps:这边是取最大 所以不用跑完 从大的往下减 所以时间才那麽短吧 01/14 16:17
9F:→ LearnRPG:喔 sorry 我以为是全部列出来 01/14 16:26