梅森數
阿新 • • 發佈:2021-10-15
形如2n−1的素數稱為梅森數(Mersenne Number)。例如22−1=3、23−1=7都是梅森數。1722年,雙目失明的瑞士數學大師尤拉證明了231−1=2147483647是一個素數,堪稱當時世界上“已知最大素數”的一個記錄。
本題要求編寫程式,對任一正整數n(n<20),輸出所有不超過2n−1的梅森數。
輸入格式:
輸入在一行中給出正整數n(n<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; }