Poj 1777 梅森素數

2021-07-22 07:59:42 字數 1217 閱讀 7997

vivian』s problem

time limit: 1000ms

memory limit: 30000k

題意:給100個int以內的數,每個數可以選0-10次乘到m裡,加起來必須至少選1次,初始m=1。要使得m的約數和n是2的整數次冪,並輸出最大冪次。

做法:將m分解質因數,舉例說明n的計算方法:

m=2^3x5x7^4

約數和n為:(1+2+4+8)x(1+5)x(1+7+7^2+7^3+7^4)

然後發現形如2^p-1的不同素數的乘積的n是2的整數冪,這種素數稱為梅森素數。

範圍內共有梅森素數8個,狀壓dp即可。

關鍵是要知道結論吧。

**:

#include 

#include

#include

using

namespace

std;

typedef

long

long ll;

ll ans;

bool judge[100000];

ll prime[50000];

ll mason[20];

ll masont[20];

ll totprime;

ll totmason;

bool dp[105][300];

int k;

bool isprime(ll num)

bool cal(ll num, ll &pos)

}if(num>1)return

false;

return

true;

}bool pipei(ll tar, ll par, ll tur)

return dp[tur-1][lef];

}}ll cost(ll pos)

int main()

}totmason=0;

for(int i=2;i<=31;i++)

}//printf("%lld\n",totmason);

while(~scanf("%d", &k))

else

}ll ans=0;

for(int j=0;j<(1

<<8);j++)

if(ans)printf("%lld\n", ans);

else

printf("no\n");

}}

梅森素數彙總

第9個梅森素數 當p 61時,m 61 2 61 1,位數為19位,由pervushin發現於公元1883年。第10個梅森素數 當p 89時,m 89 2 89 1,位數為27位,由powers發現於公元1911年。第11個梅森素數 當p 107時,m 107 2 107 1,位數為33位,由pow...

數論 梅森素數

定義 lucas lehmer判定法 判定乙個梅森數是否是梅森素數 設p是素數,第p個梅森數為m p 為2 p 1,r1 4,對於k 2 r k r k 1 2 2 modm p 0 r k m p 可以得到r k 序列,則有m p 是素數,當且僅當r p 1 0 mod m p 如下 includ...

梅森素數c 實現

梅森數 mersenne prime 指的是形如2 n 1的正整數,其中指數 n 是素數,即為。如果乙個梅森數是素數,則稱其為梅森素數。當n 2,3,5,7時,都是素數,但n 11時,顯然不是梅森素數。1722年,瑞士數學大師尤拉證明了 是乙個素數,它共有 10 位數,成為當時世界上已知的最大素數。...