1. 程式人生 > >找出7個默森尼數。法國數學家默森尼曾提出下列公式:Mp=2^p-1。

找出7個默森尼數。法國數學家默森尼曾提出下列公式:Mp=2^p-1。

#include <stdio.h>
#include <math.h>

int JudgePrime(int p) //判斷一個數是否為素數,是則返回0,不是返回-1
{
int flag = 0;
int i = 0;

for (i = 2; i < p; i++)
{
if (p % i == 0)
{
flag = 1;
}
}

if (flag == 0)
{
return 0;
}
return -1;
}

int MersenneNum(long *Arr) //求Mersenne數,放入陣列中
{
long int Mp = 0;
int p = 0;
int count = 0;

for (p = 2; p <= 10000; p++)
{
if (JudgePrime(p) == 0) //判斷p是不是素數
{
Mp = pow(2, p) - 1;
if (JudgePrime(Mp) == 0)
{
Arr[count++] = Mp; //判斷Mp是不是素數,是則放入陣列中
if (count >= 7)
{
break;   //算出7個則退出
}
}
}
}
return count;
}

void PrintArr(long *Arr, int count) //列印結果
{
int i = 0;
for (i = 0; i < count; i++)
{
printf ("%ld  ", Arr[i]);
}
printf ("\n");
}

int main()
{
long int Arr[100] = {0}; //存放求得的Mersenne number 
int count = 0;

count = MersenneNum(Arr);
PrintArr(Arr, count);

return 0;
}