标题
判断梅森尼数
问题描述
对于一个正整数n, 如果m=2”-1是一个素数,那么称m为梅森尼数。要求输入一个正整数n(1<n<20),如果是梅森尼数,那么输出m 1;如果不是梅森尼数,那么输出m 0。
输入说明
输入一个正整数,表示n,而且1<n<20
输出说明输出为一行数据,包括两个整数。其中第一个为m=2”-1; 第二个为0或者1,分别表示是梅森尼数或者不是梅森尼数。
输入例子
2
输出例子
3 1
#include <stdio.h>
#include <math.h>
int main()
{
int n,m,arr[100000];
scanf("%d",&n);
m = pow(2,n)-1;
//找质数
int i = 0,j=0,flag1=0;
for(i=2;i<=pow(2,n);i++)
{
int flag = 0;
for(j=3;j<sqrt(i);j++)
{
if(i%j==0)
{
flag=1;
}
}
if(flag==0)
{
arr[flag1++]=i;
}
}
int flag = 0;
for(i=0;i<=flag1;i++)
{
if(m==arr[i])
{
printf("%d 1",m);
flag = 1;
}
}
if(flag==0)
printf("%d 0",m);
return 0;
}