游客:
新账户
|
登录
|
会员
|
统计
|
帮助
|
繁体
|
English
中国分布式计算论坛
»
GIMPS (Prime95)
» 梅森素数小程序
‹‹ 上一主题
|
下一主题 ››
投票
交易
悬赏
活动
打印
|
推荐
|
订阅
|
收藏
标题: 梅森素数小程序
秋海棠
新手上路
UID 8653
精华 0
积分 1
帖子 1
阅读权限 10
注册 2005-11-14
#1
发表于 2005-11-14 21:18
资料
短消息
加为好友
梅森素数小程序
#include <stdio.h>
long MP(long i)
{int j=1;
while(i)
{j=2*j;
i--;
}
return(j);
}
long IF(long i)
{int j;
for(j=2;j<i;j++)
if(i%j==0) break;
return(j==i?1:0);
}
main()
{long i,T,Y,M;
for(i=2;i<31;i++)
{T=IF(i);
if(T)
{M=MP(i)-1; Y=IF(M);
if(Y) printf("M%ld=%ld ",i,M);
}
}
printf("\n");
}
很不好意思啊,我看了"南方周末"后就写了这个程序.我只会这些,我发表在这里其实是想知道怎么求更大的了.有谁可以告诉我吗?
[广告]
SETI@home 优化程序,推荐使用!
wreck
论坛知事
UID 3286
精华 0
积分 311
帖子 65
阅读权限 10
注册 2004-11-14
#2
发表于 2005-11-15 11:57
资料
短消息
加为好友
那就得寻找表示更大的数的方法
好像有个叫做gmp的库可以表示任意精度的数
但是我研究了一段时间还是不大会用
我自己写了一个程序可以表示几千位的数,而且实现了其加减乘除乘方等基本运算
但是效率很低
我是用一个数组来表示一个数的
如a[1000]表示一个1000位的数
a[0]代表这个数的位数,a[1]表示个位,a[2]表示十位,a[a[0]]表示最高位
以下为摘抄的乘法的算法
BOOL MyMath::Mult(int aTmp[], int bTmp[], int cTmp[])
{
BigNum bgRes;
BigNum bgTmp;
BigNum bgTTmp;
bgTmp.m_a[0] = aTmp[0];
for(int ib=1;ib<=bTmp[0];ib++)
{
bgTmp.Clear();
for(int ia=1;ia<=aTmp[0];ia++)
{
bgTmp.m_a[ia] = aTmp[ia]*bTmp[ib];
}
ZZH(bgTmp.m_a);
fz(bgTTmp.m_a, bgTmp.m_a);
for(int ibB=1;ibB<ib;ibB++)
{
Mult10(bgTTmp.m_a, bgTTmp.m_a);
}
Add(bgRes.m_a, bgTTmp.m_a, bgRes.m_a);
}
fz(cTmp, bgRes.m_a);
return TRUE;
}
/*
* dst = src*10
添加日期: 2005-01-21 21:58
*/
BOOL MyMath::Mult10(int srcTmp[], int dstTmp[])
{
BigNum bgI;
fz(bgI.m_a, srcTmp);
for(int i=bgI.m_a[0]+1;i>1;i--)
{
dstTmp[i] = bgI.m_a[i-1];
}
dstTmp[1] = 0;
dstTmp[0] = bgI.m_a[0] + 1;
return TRUE;
}
@@
碧城仙
管理员
UID 403
精华
54
积分 8773
帖子 8087
阅读权限 102
注册 2004-1-24
来自 华东理工大学
#3
发表于 2005-11-15 13:00
资料
主页
短消息
加为好友
GIMPS 是开放源代码的,WIN 平台 24.14 版本 Prime95 程序源代码下载地址:
ftp://mersenne.org/gimps/source2414.zip
大家可以下载了研究研究。
快是快乐的一半,快乐才是计算的全部。
癌症研究相关项目:Folding@home、Rosetta@home、Help Conquer Cancer(WCG)、Cels@Home
coralding
新手上路
UID 11187
精华 0
积分 2
帖子 2
阅读权限 10
注册 2006-5-18
#4
发表于 2006-5-18 18:53
资料
短消息
加为好友
难道没人研究过吗?这个源代码似乎少了什么东西,根本无法形成可执行文件。
碧城仙
管理员
UID 403
精华
54
积分 8773
帖子 8087
阅读权限 102
注册 2004-1-24
来自 华东理工大学
#5
发表于 2006-5-18 20:07
资料
主页
短消息
加为好友
ftp://mersenne.org/gimps/
下面还有其他版本的源代码,不会都缺少头文件吧?
快是快乐的一半,快乐才是计算的全部。
癌症研究相关项目:Folding@home、Rosetta@home、Help Conquer Cancer(WCG)、Cels@Home
wreck
论坛知事
UID 3286
精华 0
积分 311
帖子 65
阅读权限 10
注册 2004-11-14
#6
发表于 2006-5-19 14:08
资料
短消息
加为好友
那个源文件好像不能直接用VC编译,gcc应该可以,但是我又不会用gcc
@@
Youth
管理员
勿忘国耻~振兴中华
UID 1613
精华
29
积分 8955
帖子 8655
阅读权限 102
注册 2004-6-30
来自 上海
#7
发表于 2006-5-19 15:58
资料
主页
短消息
加为好友
可以的,里面有vs的项目文件
我刚才试了一下,prp目录下的可以通过
但prime95目录下的说是少一个叫security.c的文件
欢迎所有 BOINC 用户加入
Team China
团队 |
my Stats...
投票
交易
悬赏
活动
控制面板首页
编辑个人资料
积分交易
公众用户组
好友列表
当前时区 GMT+8, 现在时间是 2008-7-6 14:53
沪ICP备05042587号
Powered by
Discuz!
5.5.0
© 2001-2007 Comsenz Inc.
TOP
清除 Cookies
-
联系我们
-
中国分布式计算总站
-
Archiver
-
WAP