C++基礎習題(求範圍內有多少梅森尼數)
阿新 • • 發佈:2021-01-22
梅森數又稱麥森數,是指形如2^p-1的正整數,其中指數p是素數,常記為Mp,若其是素數,則稱為梅森素數,求[m,n]範圍內有多少梅森尼數
#include <iostream>
using namespace std;
int meisen(int m,int n);
int main()
{
int m, n;
cout << "請輸入區間的最小值和最大值" << endl;
cin >> m >> n;
cout << "在區間[" << m << "," << n << "]上,梅森尼數的個數為" << meisen(m, n) << endl;
return 0;
}
int meisen(int m, int n)
{
int result=0;
int i,j;
int count=0;
int a;
int p=1;
for (i = 2;i<=n; i++)
{
for (j = 1; j <= i; j++)
{
if (i % j == 0)
{
count++ ;
}
}
if (count == 2)//上面這部分用來判斷是否為素數
{
for (a = 1; a <= i; a++)
{
p = 2*p;
}
if ((p-1) >= m && (p-1) <= n)
{
result++;
}
}
count = 0;
p = 1;
}
return result;
}