麦森数

来源:互联网 发布:人工智能教材 编辑:程序博客网 时间:2024/05/03 23:22
//麦森数#include<stdio.h>#include<memory.h>#include<math.h>#define LEN 125void Multiply(int *a,int *b){int i,j;int nCarry;int nTmp;int c[LEN];memset(c,0,sizeof(int)*LEN);for(i=0;i<LEN;i++){nCarry=0;for(j=0;j<LEN-i;j++){nTmp=c[i+j]+a[i]*b[j]+nCarry;c[i+j]=nTmp%10000;nCarry=nTmp/10000;}}memcpy(a,c,LEN*sizeof(int));}int main(){int i;int p;int anPow[LEN];int aResult[LEN];scanf("%d",&p);printf("%d\n",(int)(p*log10(2))+1);anPow[0]=2;aResult[0]=1;for(i=1;i<LEN;i++){anPow[i]=0;aResult[i]=0;}while(p>0){if(p&1)Multiply(aResult,anPow);p>>=1;Multiply(anPow,anPow);}aResult[0]--;for(i=LEN-1;i>=0;i--){if(i%25==12)printf("%02d\n%02d",aResult[i]/100,aResult[i]%100);else{printf("%04d",aResult[i]);if(i%25==0)printf("\n");}}return 0;}

0 0