问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

求梅森素数程序

发布网友 发布时间:2022-10-03 13:55

我来回答

5个回答

热心网友 时间:2023-10-10 15:43

2008年8月 发现了第46个梅森素数2^43112609-1。是目前已知的最大素数,它有12978189位

这么大的梅森素数的检验程序,百度这可贴不下

现在分布式网络计算中 用的一种是 西班牙uillermo Ballester Valor 编写的Glacus 程序

代码是 c 的

这是下载页面地址 :
http://www.oxixares.com/pub/glucas/snapshots/

最新版本:
http://www.oxixares.com/pub/glucas/snapshots/glucas-2.9.2-20080916.tar.gz

热心网友 时间:2023-10-10 15:43

#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#include <time.h>

unsigned int *arrBase;
unsigned int *arrCac;
unsigned int *arrResult;

unsigned int DecNum=1000;
unsigned int NUM;
unsigned int StartPos;
unsigned int StartPos4;
void initArr(unsigned int* arr)
{
_asm{
mov ecx, NUM
mov ebx, arr
_init:
mov dword ptr [ebx],0
add ebx,4
loop _init
}
}

void addArr(unsigned int* arr,unsigned int* arr2)
{
__asm{
mov ecx, NUM
mov esi, arr
mov edi, arr2
mov eax, ecx
shl eax, 2
add esi, eax
add edi, eax
clc
_add:
sub esi, 4
sub edi, 4
mov eax, [edi]
adc [esi],eax
loop _add
}

}

void subArr(unsigned int* arr,unsigned int* arr2)
{

_asm {
mov ecx, NUM
dec ecx
mov esi, arr
mov edi, arr2
clc
_sub:
mov eax, [edi+ecx*4]
sbb [esi+ecx*4],eax
loop _sub
}
}

void mulArr(unsigned int* arr,unsigned int num)
{
_asm{
mov ecx,NUM

mov ebx,ecx
shl ebx,2
add ebx,arr
xor edx,edx
mov edi,num
xor esi,esi
_mul:
sub ebx,4
mov eax,[ebx]
mul edi
add eax,esi
mov [ebx],eax
adc edx,0
mov esi,edx
loop _mul

}
}

void divArr(unsigned int *arr,unsigned int num)
{
__asm{
mov ebx,arr
mov ecx,NUM
xor edx,edx
_div: mov eax,[ebx]
div num
mov [ebx], eax
add ebx, 4
loop _div
}
}

/*
caculate arctan(1/num), and store the result to arr
*/
void arctanX(unsigned int num)
{

unsigned int dd;
unsigned int remain=0;
unsigned int loopN;
dd=(long)num*num;
loopN=(int)(32*NUM*log(2)/log(5));
initArr(arrBase);
initArr(arrCac);
arrBase[0]=1;
divArr(arrBase,num);
StartPos=1;
_asm mov ebx,1

forloopN:
_asm mov eax, StartPos
_asm shl eax, 2
_asm mov StartPos4,eax
_asm mov edi, arrCac
_asm add edi, StartPos4
_asm mov esi, arrBase
_asm add esi, StartPos4
_asm mov ecx, NUM
_asm sub ecx, StartPos
_asm xor edx, edx

_asm test ebx,2
_asm jnz cond2
cond1:
fori1:

_asm mov eax, [esi]
_asm div ebx
addCac:
_asm add [edi], eax
_asm jnc fori11
_asm push edi
addCarry: _asm sub edi, 4
_asm add dword ptr [edi], 1
_asm jc addCarry
_asm pop edi
fori11:
_asm add edi, 4
_asm add esi, 4
_asm loop fori1

_asm jmp divarrBase

cond2:
fori2:
_asm mov eax, [esi]
_asm div ebx
subCac:
_asm sub [edi], eax
_asm jnc fori22
_asm push edi
subCarry:
_asm sub edi, 4
_asm sub dword ptr [edi],1
_asm jc subCarry
_asm pop edi
fori22:
_asm add esi, 4
_asm add edi, 4
_asm loop fori2

divarrBase:
_asm xor eax, eax
_asm xor edx, edx
_asm mov esi, dd

_asm mov edi, arrBase
_asm mov ecx, NUM

forBase:
_asm mov eax,[edi]
_asm div esi
_asm mov [edi], eax
_asm add edi, 4
_asm loop forBase

_asm inc ebx
_asm inc ebx
_asm mov esi, arrBase
_asm mov eax, StartPos
_asm shl eax, 2
_asm add esi, eax
_asm cmp dword ptr [esi],0
_asm jnz forloopN
_asm inc StartPos
_asm mov eax,StartPos
_asm cmp eax, NUM
_asm jb forloopN

}

void pArr(unsigned int arr[])
{
printf("%d.\n",arr[0]);
for(unsigned int i=1;i<NUM;i++){
arr[0]=0;
mulArr(arr,100000);
printf("%05ld",arr[0]);
if(i%20==0) printf("\n");
}
}

unsigned int main()
{
unsigned int x;
unsigned int i;
unsigned int j;
unsigned int buf[10];
unsigned int tmp;
FILE* fp;
time_t timerStart, timerEnd;
printf("-----caculating pi--------\n");
printf("input nums of pi:");
scanf("%d",&DecNum);
NUM= (int)(DecNum / log10(2) / 32) + 4;
arrBase=(unsigned int*)calloc(NUM,4);
arrCac=(unsigned int*)calloc(NUM,4);
arrResult=(unsigned int*)calloc(NUM,4);

if(arrBase==NULL || arrCac==NULL || arrResult==NULL)
{
printf("\nerror alloc memory!");
return 9;
}
time(&timerStart);
printf("working... ...");
x=5;
initArr(arrResult);
arctanX(x);
mulArr(arrCac,16);
addArr(arrResult,arrCac);

x=239;
arctanX(x);
mulArr(arrCac,4);
subArr(arrResult,arrCac);
time(&timerEnd);
printf(" ok,time used: %ld\n",timerEnd-timerStart);
fp=fopen("pi.txt","w+");
if(fp==NULL){
printf("error! create file");
return 2;
}

else{
fprintf(fp,"%d.\n",arrResult[0]);
for(i=1;i<=DecNum/5;i++){
arrResult[0]=0;
mulArr(arrResult,100000);
fprintf(fp,"%05d",arrResult[0]);
if(i%20==0) fprintf(fp,"\n");

}
fclose(fp);

}
return 0;
}

热心网友 时间:2023-10-10 15:44

我给你写一个简单的 但效率不高. 你要求的那么大的一个数字很难表示.

Private Sub Command1_Click()
Dim i As Long
Dim j As Long
For i = 1 To 100
For j = i - 1 To 2 Step -1
If i Mod j = 0 Then
Exit For
End If
Next
If j <= 1 Then
For j = 1 To 10 '10000=100*100
If 2 ^ j = i Then
Me.Print i & "是梅森素数"
End If
Next

End If
Next
End Sub

热心网友 时间:2023-10-10 15:44

2^999999是301030位(十进制)的数,这样的数要证明是素数,你只要能证明出一个,估计你就能获得国家科技进步二等奖以上的奖了。

热心网友 时间:2023-10-10 15:45

这个还真不好算.即使是double 型.在进行指数运算的时候也只能表示到2的1024次方.连第15个梅森素数都表示不了.
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
新装修怎样去除异味又快又有效,洋葱和土肥皂都试过了,都没用。 新装修的店面通风多久 新店装修通风需要多久? 新装修的店面多久多久没有异味 “新店装修后臭味能持续多长时间”_百 ... 我09年的国三柴油货车,到19年7月以后还能审吗? iebook 怎样让背景音乐从第一页开始放而不是封面开始 iebook超级精灵的背景音乐和页面插入音乐,可以分别控制吗? 用iebook做电子杂志的时候怎么从头到尾设同一首音乐 iebook支持导入多首音乐吗?可不可以对每页进行音乐设置? IEBOOK 往回翻页时上一页的背景音乐怎么样才能从头开始播放而不是接... 如何用iebook连续几页不间断播放同一首音乐? 一个汇编除法,紧急求教 请高手指点一下这个梦是什么意识啊。多谢了!! 农行不让升级一类卡 紫金矿业股票能做长线吗 朔的寓意是什么 朔怎么读 朔字意思介绍 朔字是什么意思 朔的含义 It seems that 是固定搭配吗,有it seemed that 吗 地板怎么拖干净又亮 地板如何拖干净又亮 受贿罪怎么认定 如何认定受贿罪 受贿罪怎么认定 认定受贿罪的标准是什么 怎样认定受贿罪 判断受贿罪的情形有哪些 受贿罪怎样认定 刚才老爸杀鸡,我帮他抓鸡脚,洗了两次手,手上还是有鸡的味道,怎么去掉? 吃了鸡爪手上的味去不掉 狗狗护食怎样调教 it,is,on,sofa,the,not怎么连成一个句子? 用sofa造五个句子。 联想flex3a87410什么处理器 主板上的CR2032电池完全没电后能开机吗 纽扣电池没电会不会导致电脑开机没画面 我的桌面桌面会这样 读《童话故事》有感 红米note9一关机就开不了机? 时蔬虾丸做法步骤 如何做时蔬虾丸 手机出现耳机标志没声音怎么办 手机显示耳机模式的原因及解决方法_百 ... 有什么方法可以在10分钟内让衣服干? 三星手机怎样手动更新系统? 一口气在智联招聘上投了十几家公司,不知道可不可靠了,机会不知道大不大,有没有在智联上找到工作的呢? 梦到被恶鬼追杀吓醒? vivoy70s怎么打开隐私空间 vivoy70s如何打开隐私空间 我的青春我的团作文 我的青春我的团作文例文 VCD碟上直接拷贝的MPEG格式视频清晰度降低太多可否恢复? VCD转DVD画质会变好吗 以前VCD感觉很清晰,为什么现在有些视频用电脑看感觉画面惨不忍睹? 做奶香小油条时忘了放鸡蛋。和盐怎么办? 姓张,明字辈,五行缺木女孩求取名 头发本来就少,还大把掉头发,怎么回事