7-9 梅森数

嵌套循环程序设计

7-9 梅森数

img

#include<stdio.h>
//#include<math.h>
int suShu(int number){
	for(int i=2;i*i<=number;i++){//是小于等于,用i*i降低时间复杂度
		if(number % i == 0){
			return 0;
		}
	}
	return 1;
}//检查素数
int meisenShu(int number,int n){
		for(int i=2;i<=n;i++){
			if((number + 1) == 1 << i ){//移位运算,<<右移,表示2的n次方
				return 1;
			}
	}
	return 0;
}//是2的n次方-1
//主程序要满足suShu,meisenShu
int main (){
	int n, total;
	int flag = 0;
	scanf("%d",&n);
//	total = pow(2,n) - 1;
	total = (1 << n) - 1;
	for(int i=2;i<=total;i++){
		if(meisenShu(i,n) && suShu(i)){
			flag = 1;//找到梅森数
			printf("%d\n",i);
		}
	}
	if(flag == 0){
		printf("None");
	}
	return 0;
}

posted @ 2024-11-11 15:52  GJ504b  阅读(0)  评论(0编辑  收藏  举报