1. 程式人生 > 其它 >梅森數

梅森數

形如2n−1的素數稱為梅森數(Mersenne Number)。例如22−1=3、23−1=7都是梅森數。1722年,雙目失明的瑞士數學大師尤拉證明了231−1=2147483647是一個素數,堪稱當時世界上“已知最大素數”的一個記錄。

本題要求編寫程式,對任一正整數nn<20),輸出所有不超過2n−1的梅森數。

輸入格式:

輸入在一行中給出正整數nn<20)。

輸出格式:

按從小到大的順序輸出所有不超過2n−1的梅森數,每行一個。如果完全沒有,則輸出“None”。

輸入樣例:

6



結尾無空行

輸出樣例:

3
7
31結尾無空行

answer

#include <stdio.h>
#include <math.h>
int sushu(int n){
	int i;
	for(i = 2;i < n;i++){
		if(n%i==0){
			break;
		}
	}
	if(i == n)
		return 1;
	else
		return 0;
}
int main(){
	int n;
	int cnt = 0;
	scanf("%d",&n);
	for(int i = 1;1;i++){
		if(pow(2,i)-1 > pow(2,n)-1)
			break;
		if(sushu(pow(2,i)-1)){
			printf("%.0lf\n",pow(2,i)-1);
			cnt++;	
		}
	}
	if(cnt==0)
		printf("None");			
	return 0;
}