题目:
实验4-2-9 梅森数 (20分)
题目要求:
输入格式:
输入在一行中给出正整数n(n<20)。
输出格式:
按从小到大的顺序输出所有不超过2n−1的梅森数,每行一个。如果完全没有,则输出“None”。
输入样例:
6
输出样例:
3
7
31
解题代码:
#include<stdio.h>
#include<math.h>
int prime( int n );
int main()
{
int n;
scanf( "%d", &n );
int i;
long int a;
int flag = 1;
for( i = 2; i <= n; i++ )
{
a = pow( 2, i ) - 1;
if( prime( a ) == 1 ) printf( "%d\n", a );
flag = 0;
}
if( flag == 1 ) printf( "None\n" );
return 0;
}
int prime( int n )
{
int flag = 1;
int i;
if( n % 2 == 0 && n != 2 ) flag = 0;
else
{
for( i = 3; i <= sqrt( n ); i+= 2 )
{
if( n % i == 0 )
{
flag = 0;
break;
}
}
}
return flag;
}