24小时热门版块排行榜    

CyRhmU.jpeg
查看: 3386  |  回复: 23
本帖产生 7 个 程序强帖 ,点击这里进行查看

asaka

银虫 (初入文坛)

★ ★ ★ ★
小木虫(金币+0.5):给个红包,谢谢回帖
余泽成(金币+3, 程序强帖+1): 鼓励交流! 2011-09-09 23:16:14
Python简洁版:
CODE:
def facp(n) :
  for i in xrange(2,n) :
    while n%i == 0 :
      n /= i
      yield i
    if i**2 > n : break
  if n!=1 : yield n

for n in xrange(3,99999) :
  p = list(facp(n/2))+list(facp(n+1)) if n%2==0 else list(facp(n))+list(facp((n+1)/2))
  c = reduce( lambda x,y: x*y, [p.count(i)+1 for i in set(p)] )
  if c > 500 : break
print n*(n+1)/2

21楼2011-09-09 00:51:35
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

rzhabl

新虫 (初入文坛)


小木虫: 金币+0.5, 给个红包,谢谢回帖
引用回帖:
1238961楼: Originally posted by huycwork at 2011-05-17 11:10:45
你又遍历!...

我觉得肯定是要设置算法的,如果穷举欧拉就没意思了。一分钟原则吧
22楼2012-08-03 13:47:50
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

rzhabl

新虫 (初入文坛)


小木虫: 金币+0.5, 给个红包,谢谢回帖
感谢楼上的算法,呵呵   我的程序如下
tic;
c=cumsum(1:15000);
for i=1:length(c)
    z=factor(c(i));
    s=prod(hist(z,unique(z))+1);
    if s>=500
        break;
    end
end
disp(c(i))
toc;
23楼2012-08-03 14:23:18
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

云暮微澜

铜虫 (小有名气)


小木虫: 金币+0.5, 给个红包,谢谢回帖
其实可以加个判断,如果三角数小于2^499,可以直接舍弃,应该能省一部分时间
24楼2022-02-11 09:53:05
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 libralibra 的主题更新
普通表情 高级回复(可上传附件)
信息提示
请填处理意见