24小时热门版块排行榜    

北京石油化工学院2026年研究生招生接收调剂公告
查看: 1294  |  回复: 4
本帖产生 2 个 程序强帖 ,点击这里进行查看

wangww2011

木虫 (著名写手)

[交流] Project Euler 47 欧拉工程 47 题 已有3人参与

前两个连续拥有两个素数因子的数是:
14 = 2 * 7
15 = 3 * 5

前三个连续拥有三个素数因子的数是:
644 = 2^2 * 7 * 23
645 = 3 * 5 * 43
646 = 2 * 17 * 19.

请找到前四个连续拥有四个素数因子的数,这四个数中的第一个数是多少?
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

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的回帖

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的回帖

libralibra

至尊木虫 (著名写手)

骠骑将军

★ ★ ★
小木虫(金币+0.5):给个红包,谢谢回帖
jjdg(金币+2): 感谢参与 2011-09-08 10:06:50
matlab
CODE:
% ans =
%       134043
function result = euler47()
tic;
result = 644;
while 1
    result = result+1;
    if length(unique(factor(result)))==4 && ...
            length(unique(factor(result+1)))==4 && ...
            length(unique(factor(result+2)))==4 && ...
            length(unique(factor(result+3)))==4
        break;
    end
end
toc;
end

matlab/VB/python/c++/Java写程序请发QQ邮件:790404545@qq.com
4楼2011-09-08 01:09:04
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

chyanog

金虫 (小有名气)


小木虫: 金币+0.5, 给个红包,谢谢回帖
Mathematica做Project euler优势更大,
楼上的matlab代码运行了40s,mathematica版的1.4s
Project Euler 47 欧拉工程 47 题
CODE:
(*method1*)
Catch@Do[
   If[
    Length@FactorInteger[i] == 4 &&
     Length@FactorInteger[i + 1] == 4 &&
     Length@FactorInteger[i + 2] == 4 &&
     Length@FactorInteger[i + 3] == 4, Throw@i],
   {i, 10^6}] // AbsoluteTiming

(*method2*)
i = 1;
NestWhile[Length@FactorInteger[i++] != 4 &, , Or, 4]; // AbsoluteTiming
i - 4

5楼2013-09-15 18:32:16
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 wangww2011 的主题更新
普通表情 高级回复 (可上传附件)
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考研] 085600,320分求调剂 +7 大馋小子 2026-04-01 8/400 2026-04-05 21:19 by 学员8dgXkO
[考研] 工科08-机械专硕-求调剂 +3 雷欧飞踢 2026-04-02 3/150 2026-04-05 18:49 by 蓝云思雨
[考研] 080200学硕,机械工程专业277分,求带走! +7 瓶子PZ 2026-03-31 7/350 2026-04-05 17:49 by liucky
[考研] 295求调剂 +8 FZAC123 2026-04-03 8/400 2026-04-05 17:46 by 蓝云思雨
[考研] 288求调剂,一志愿华南理工大学071005 +6 ioodiiij 2026-04-04 6/300 2026-04-05 10:09 by guoweigw
[考研] 材料工程310专硕调剂 +13 捞捞我…. 2026-04-04 14/700 2026-04-05 09:01 by 来看流星雨10
[考研] 313求调剂 +3 海日海日 2026-04-04 3/150 2026-04-05 07:48 by 544594351
[考研] 323求调剂 +8 李佳乐1 2026-04-04 8/400 2026-04-04 22:26 by hemengdong
[考研] 282电子信息0854专硕调剂 +4 202451007219 2026-04-02 6/300 2026-04-04 21:55 by laoshidan
[考研] 085602 找调剂 +4 逆时针快乐 2026-04-02 4/200 2026-04-04 19:32 by 蓝云思雨
[考研] 291求调剂 +4 迷蒙木木 2026-04-01 5/250 2026-04-04 15:59 by sihailian3
[考研] 322求调剂 +4 FZAC123 2026-04-03 4/200 2026-04-03 20:55 by zhq0425
[考研] 一志愿北京交通大学材料工程总分358 +4 cs0106 2026-04-03 4/200 2026-04-03 13:41 by 百灵童888
[考研] 071000生物学调剂 +8 知昭蔓 2026-04-02 8/400 2026-04-03 10:36 by macy2011
[考研] 重庆大学材料与化工085600,初试370+,求求调剂建议 +8 shzhou_ 2026-04-01 9/450 2026-04-03 09:31 by 蓝云思雨
[考研] 085600,320分求调剂 +6 大馋小子 2026-04-02 6/300 2026-04-02 21:54 by dongzh2009
[考研] 求调剂推荐 +3 南山南@ 2026-04-01 3/150 2026-04-02 12:09 by xiaoranmu
[考研] 279求调剂 +7 莫xiao 2026-04-01 7/350 2026-04-01 22:05 by 客尔美德
[考研] 求调剂0703 +5 周嘉尧 2026-03-31 8/400 2026-04-01 20:32 by ltltkkk
[考研] 262求调剂 +7 ZZ..000 2026-03-30 8/400 2026-03-31 10:05 by cal0306
信息提示
请填处理意见