24小时热门版块排行榜    

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

libralibra

至尊木虫 (著名写手)

骠骑将军

[交流] Euler Project Q7. 欧拉工程第七题 已有6人参与

By listing the first six prime numbers: 2, 3, 5, 7, 11, and 13, we can see that the 6th prime is 13.

What is the 10001st prime number?

列出前6个素数:2,3,5,7,11,13,可看出,第6个素数是13.
第10001个素数是多少?
回复此楼

» 猜你喜欢

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

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

huycwork

金虫 (著名写手)

★ ★ ★
小木虫(金币+0.5):给个红包,谢谢回帖
微尘、梦想(金币+2): 鼓励交流! 2011-05-14 19:57:06
余泽成(程序强帖+1): 2011-05-15 19:10:42
引用回帖:
Originally posted by holmescn at 2011-05-14 13:01:05:
虽然使用了筛选法,但这个matlab程序还是需要7秒多。

[code]
function euler7
    tic;
    n = 10001;
    primes = ones(n,1);
    primes(1:2) = [2 3];
    i = 3;
    m = 5;
    while i <=  ...

分段筛选试试~
整段筛选的话,每次都需要测试相同的素数,就是说,每次都得从2,3开始测试。就算不需要从2开始测试,3,5,7这样的测试是免不了浪费的。
可以观察函数x*y=z可以发现,以x=y=sqrt(z)为分界线,要么xy,也就是说,如果某数存在因数,肯定是一个在sqrt(z)的左边,另一个在右边。这当然不怎么新鲜,问题在于,既然某个数的一个段落之内可能有好几个因数,那就可以一次性全部找出来而不必下次循环时再来从头开始找。
比如说100,sqrt(100)=10,以10为分界线,如果按照整段筛选的策略,那1~100以内的每个数都需要被遍历,每个数都至少要测试sqrt(n)个素数,排在前面的2,3,5这样的素数大约都需要被重复测试100遍,但是如果以50分段,第一遍,一次性找出前面50个素数,重复测试的次数还是50;第二遍的时候性能开始体现,2只需要测试25遍,3只需要测试16遍,5只需要测试10遍,相比100遍来说,还是好一些。
漩涡的中心有一块空地,空空的。
8楼2011-05-14 14:57:29
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 15 个回答

libralibra

至尊木虫 (著名写手)

骠骑将军

★ ★
微尘、梦想(金币+2): 用已有函数,也行,不需要干什么都得自己现编,呵呵…… 2011-05-14 19:55:46
matlab code
CODE:
%% find 10001's prime number
function result = euler7()
tic;
x = primes(200000);
result = x(10001);
toc;
end

结果
CODE:
% Elapsed time is 0.008245 seconds.
% ans =
%       104743

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

微尘、梦想

木虫 (知名作家)

★ ★ ★ ★
小木虫(金币+0.5):给个红包,谢谢回帖
余泽成(金币+3, 程序强帖+1): 谢谢参与交流! 2011-05-15 19:09:36
来个不作弊的……
CODE:
#include
#include
void main(void)
{
        int n,i=1,j,m,flag;
        for(n=3;1;n+=2)
        {
                flag=0;
                m=sqrt(n);
                for(j=2;j<=m;j++)
                {
                        if(n%j==0)
                                flag++;
                }
                if(flag==0) i++;
                if(i==10001) break;
        }
        printf("%d\n",n);
}

素数的判定方法:用2到sqrt(n)之间的所有整数去除n,如果所有的数都除不尽n,则n为素数,否则n就不是素数。
剩下的一个一个数就行了,一直数到10001……

结果:104743
运行时间:不足1秒

[ Last edited by 微尘、梦想 on 2011-5-14 at 10:36 ]
任风云变幻,我笑对人生!
4楼2011-05-14 10:35:02
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

huycwork

金虫 (著名写手)

★
小木虫(金币+0.5):给个红包,谢谢回帖
引用回帖:
Originally posted by 微尘、梦想 at 2011-05-14 10:35:02:
来个不作弊的……
[code]#include <stdio.h>
#include <math.h>
void main(void)
{
        int n,i=1,j,m,flag;
        for(n=3;1;n+=2)
        {
                flag=0;
                m=sqrt(n);
                for(j=2;j<=m;j++)
                {
                        i ...

这个还可以再优化滴~~~
漩涡的中心有一块空地,空空的。
5楼2011-05-14 10:46:35
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
普通表情 龙 兔 虎 猫 高级回复 (可上传附件)
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考博] 售SCI文章,我:8O.5.5.1O.54,科目全,可十急 (EPI+-1)(金币-50) +3 cqwQDCxMcL3I 2026-09-29 4/200 2026-09-30 16:52 by Z9YWQ5EAO3qp
[论文投稿] 售SCI一区T0P文章,我:8O.55.1.O.54,科目全,可伽急 +3 cqwQDCxMcL3I 2026-09-29 4/200 2026-09-30 16:45 by Z9YWQ5EAO3qp
[公派出国] 售SCI一区文章,我:8O5.5.1.O5.4,科目全,可伽急 +3 cqwQDCxMcL3I 2026-09-29 6/300 2026-09-30 16:26 by Z9YWQ5EAO3qp
[考研] 售SCI一区文章,我:8O5.5.1.O5.4,科目全,可伽急 +3 cqwQDCxMcL3I 2026-09-29 6/300 2026-09-30 16:14 by Z9YWQ5EAO3qp
[博后之家] 售SCI文章,我:8O.5.5.1O.54,科目全,可十急 +4 IDs3scOF0tjC 2026-09-28 4/200 2026-09-29 19:27 by cqwQDCxMcL3I
[找工作] 售SCI一区T0P文章,我:8.O.55.1.O54,科目全,可伽急 +4 ZYXdhzDAy9ZX 2026-09-28 4/200 2026-09-29 16:54 by yCO1Ll7aHtsw
[考研] 售SCI一区T0P文章,我:8.O.55.1.O.54,科目齐全,可+急 +3 ZYXdhzDAy9ZX 2026-09-28 4/200 2026-09-29 16:37 by etmYJ6d2rquH
[硕博家园] 售SCI文章,我:8O.5.5.1O.54,科目全,可十急 +3 ZYXdhzDAy9ZX 2026-09-28 3/150 2026-09-29 16:03 by etmYJ6d2rquH
[考博] 售一区SCI文章T0P,我:8O.551.O54,科目全,可十急 +3 tqUTOxClQUMF 2026-09-28 3/150 2026-09-29 15:46 by etmYJ6d2rquH
[博后之家] 售SCI文章,我:8O5.5.1.O.54,科目齐全,可+急 +3 tqUTOxClQUMF 2026-09-28 3/150 2026-09-29 15:04 by etmYJ6d2rquH
[考博] 售SCI一区T0P文章,我:8.O.55.1.O.54,科目齐全,可+急 +6 GDBe8tDZqE8z 2026-09-28 6/300 2026-09-29 14:41 by etmYJ6d2rquH
[硕博家园] 售SCI一区T0P文章,我:8O.55.1.O.5.4,科目齐全,可+急 +3 GDBe8tDZqE8z 2026-09-28 3/150 2026-09-29 14:30 by etmYJ6d2rquH
[考研] 售SCI一区T0P文章,我:8.O.55.1.O.54,科目齐全,可+急 +3 CfXuS1rDhLYN 2026-09-28 3/150 2026-09-29 14:24 by etmYJ6d2rquH
[博后之家] 售SCI一区文章,我:8.O.551.O.5.4,科目全,可伽急 +3 IDs3scOF0tjC 2026-09-28 3/150 2026-09-29 13:56 by etmYJ6d2rquH
[公派出国] 售一区SCI文章T0P,我:8O.551.O54,科目全,可十急 +4 IDs3scOF0tjC 2026-09-28 5/250 2026-09-29 13:50 by etmYJ6d2rquH
[教师之家] 售一区SCI文章T0P,我:8O.551.O54,科目全,可十急 +4 GDBe8tDZqE8z 2026-09-28 4/200 2026-09-29 09:49 by JzYBbHIXWSrW
[考研] 售SCI一区文章,我:8.O.551.O.5.4,科目全,可伽急 +3 ZYXdhzDAy9ZX 2026-09-28 3/150 2026-09-29 06:42 by ZvyPK8n6Nfki
[考研] 售SCI一区文章,我:8.O.55.1.O.54,科目齐全,可伽急 +3 GDBe8tDZqE8z 2026-09-28 3/150 2026-09-28 23:12 by b8fCuTHqckEt
[硕博家园] 售SCI一区T0P文章,我:8.O.55.1.O.54,科目齐全,可+急 +3 CfXuS1rDhLYN 2026-09-28 4/200 2026-09-28 22:55 by ez6fGg9abYaj
[考研] 售一区SCI文章T0P,我:8O.551.O54,科目全,可十急 +3 IDs3scOF0tjC 2026-09-28 4/200 2026-09-28 18:51 by 9lS3ad5oOymn
信息提示
请填处理意见