実験4-2-9メイソン数(20点)
6885 ワード
実験4-2-9メイソン数(20点)
2 n−1のような形をした素数をメイソン数(Mersenne Number)と呼ぶ.例えば22−1=3、23−1=7はメイソン数である.1722年、両目失明したスイスの数学の巨匠オラは231−1=247486547が素数であることを証明し、当時世界で「既知最大素数」の記録ともいえる.
本題では,いずれかの正の整数n(n<20)に対して,2 n−1を超えないすべてのメイソン数を出力するプログラムを記述することを要求する.
入力形式:
入力は、正の整数n(n<20)を1行に与える.
出力フォーマット:
2 n−1を超えないすべてのメイソン数を小さい順に出力し,行ごとに1つずつ出力した.全くない場合は「None」を出力します.
サンプルを入力:
出力サンプル:
コード#コード#
2 n−1のような形をした素数をメイソン数(Mersenne Number)と呼ぶ.例えば22−1=3、23−1=7はメイソン数である.1722年、両目失明したスイスの数学の巨匠オラは231−1=247486547が素数であることを証明し、当時世界で「既知最大素数」の記録ともいえる.
本題では,いずれかの正の整数n(n<20)に対して,2 n−1を超えないすべてのメイソン数を出力するプログラムを記述することを要求する.
入力形式:
入力は、正の整数n(n<20)を1行に与える.
出力フォーマット:
2 n−1を超えないすべてのメイソン数を小さい順に出力し,行ごとに1つずつ出力した.全くない場合は「None」を出力します.
サンプルを入力:
6
出力サンプル:
3
7
31
コード#コード#
#include
#include
double isMasonNumber(int n);
int main()
{
int i,n,number,flag=0;;
scanf("%d",&n);
// , 2^n-1 , 7 。
for(i=0;i<=n;i++)
{
number=pow(2,i)-1;
if(isMasonNumber(number))
{
printf("%d
",number);
flag=1;
}
}
if(flag==0)
printf("None");
return 0;
}
double isMasonNumber(int n)
{
int i,number,ret=1,mason=0;
if(n<2)
ret=0;
//
for(i=2;i<n;i++)
if(n%i==0)
{
ret=0;
break;
}
// +1 2
if(ret&&(n+1)%2==0)
{
mason=1;
}
return mason;
}