梅森数
7-9 梅森數 (12 分)
形如2?n???1的素數稱為梅森數(Mersenne Number)。例如2?2???1=3、2?3???1=7都是梅森數。1722年,雙目失明的瑞士數學大師歐拉證明了2?31???1=2147483647是一個素數,堪稱當時世界上“已知最大素數”的一個記錄。
本題要求編寫程序,對任一正整數n(n<20),輸出所有不超過2?n???1的梅森數。
輸入格式:
輸入在一行中給出正整數n(n<20)。
輸出格式:
按從小到大的順序輸出所有不超過2?n???1的梅森數,每行一個。如果完全沒有,則輸出“None”。
輸入樣例:
6輸出樣例:
3 7 311)實驗代碼
#include<stdio.h>
#include<math.h>
int main()
{
?int n,i,a,b=0,t=0;
??? scanf("%d",&n);
??? if(n==1)
??? printf("None");
??? for(a=2;a<=n;a++)
??? {
?? b=pow(2,a)-1;
????? for(i=2;i<b;i++)
????? {
???????? if(b%i==0)
???????? {
?????????? t=1;
?????????? break;
???????? }
????? }
????? if(t==0)
????? printf("%d\n",b);
????? t=0;
??? }
? return 0;
}
2)設計思路
1.定義整形變量,t=0作為變量標記
2.當n=1時,輸出None
3.外層循環,從2開始,b=pow(2,a)-1
4.內層循環,從2開始,如果b%i=0,t=1,跳出循環
5.如果t=0,輸出b
6.t要重置為0
7.返回主函數
3)調試中出現的問題和解決辦法
沒考慮n=1的情況,最后變量標記沒重置為0
轉載于:https://www.cnblogs.com/lqx0123/p/10101838.html
總結
- 上一篇: TCP/IP协议简介2
- 下一篇: 计算机基础-显示器