24小时热门版块排行榜    

查看: 1269  |  回复: 4
本帖产生 2 个 程序强帖 ,点击这里进行查看
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

tieer

木虫 (正式写手)

★ ★ ★ ★
小木虫(金币+0.5):给个红包,谢谢回帖
余泽成(金币+3, 程序强帖+1): 欢迎参与讨论! 2011-09-07 22:03:57
还是没人上答案啊,那就上我的超慢版吧,1241s,
CODE:
# -*- coding: cp936 -*-
#Project Euler 47 欧拉工程 47 题
#前四个连续的拥有四个素数因子的数,这四个数中的第一个数是多少?
from math import sqrt
def isprime(p):                    #验证素数,素数则返回素数本身,合数则返回False
    k=1
    for i in xrange(2,int(sqrt(p))+1):
        if p%i==0:
            k=0
            return False
            break
    if k:
        return p
def istheresult(n,m=0):
    actor=[i for i in xrange(3,n+1,2) if n%i==0]   #奇约数列表
    if n%2==0:
        actor.append(2)
    primelist=[i for i in actor if isprime(i)]     #约数中的素数
    if len(primelist)==4:
        if m:print primelist
        return True     
number=647
while True:
    if istheresult(number)and istheresult(number+1)and istheresult(number+2) and istheresult(number+3):
        print number,istheresult(number,1)
        print number+1,istheresult(number+1,1)
        print number+2,istheresult(number+2,1)
        print number+3,istheresult(number+3,1)
        break
    else:
        number+=1

答案:
134043 [3, 7, 13, 491]
134044 [23, 31, 47, 2]
134045 [5, 17, 19, 83]
134046 [3, 11, 677, 2]

[ Last edited by tieer on 2011-9-7 at 20:56 ]
思考,让这个世界更有趣。
2楼2011-09-07 20:30:18
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

智能机器人

Robot (super robot)

我们都爱小木虫

wangww2011

木虫 (著名写手)

★ ★ ★
余泽成(金币+3, 程序强帖+1): 辛苦! 2011-09-07 22:04:18
我也贴出平庸版本吧
CODE:
644
134043

CODE:
#!/usr/bin/env python

from math import sqrt

def primeN(n):
    t=[n]
    while True:
        for i in range(2,int(sqrt(t[0])+1)):
            if t[0]%i==0:
                t.append(i)
                t[0]=t[0]/i
                break
        else:
            break
    return len(set(t))


def euler47(num):
    n=1
    while True:
        for i in range(num):
            if primeN(n+i)!=num:
                break
        else:
            break
        n+=1
    return n
        

if __name__ == "__main__":
    print euler47(3)
    print euler47(4)

还有一个经典解法为(看到的):
CODE:
n=200000
factors=[0]*n

for i in range(2,n):
    if factors[i] == 0 :
        for j in range(2*i,n,i):
            factors[j] += 1


for i in range(2,n):
    if factors[i:i+4]==4*[4]:
        print i

[ Last edited by wangww2011 on 2011-9-7 at 23:07 ]
3楼2011-09-07 21:44:52
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 wangww2011 的主题更新
普通表情 高级回复 (可上传附件)
信息提示
请填处理意见