第3講 繰り返し処理for文
第3話 階乗の計算
1×2×・・・×8の解答例
//以下C#を始めるためのお呪い
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
//以上C#を始めるためのお呪い
namespace a //初心者はお呪い=決まり事と思い一切気にしない
{
class Program //初心者はお呪い=決まり事と思い一切気にしない
{
static void Main(string[] args) //私は社長だ。
{
int a; //整数を入れる箱aを用意 箱iを削除
//以下計算
a = 1;
for (int i = 1; i <= 8; i++) a *= i; //繰り返し処理
//以上計算
Console.WriteLine("1×2×・・・×8={0:d}", a); //箱aの中身を表示
}
}
}
実行結果
1×2×・・・×8=40320
皆さんの中には
//以下C#を始めるためのお呪い
using System;
using System.Collections.Generic;
using
System.Linq;
using System.Text;
using
System.Threading.Tasks;
//以上C#を始めるためのお呪い
namespace a
//初心者はお呪い=決まり事と思い一切気にしない
{
class Program
//初心者はお呪い=決まり事と思い一切気にしない
{
static void Main(string[] args)
//私は社長だ。
{
int a; //整数型変数a
//以下計算
a
= 1;
for (int i = 1; i < 21; i++) a *= i; //繰り返し処理
//以上計算
Console.WriteLine("1×2×・・・×20={0:d}", a); //変数aの中身を表示
}
}
}
と変更して実行された方もいらっしゃるのではないでしょうか。
ところが実行結果は
1×2×・・・×20=-2102132736
とおかしな結果になります。
//以下C#を始めるためのお呪い
using System;
using System.Collections.Generic;
using
System.Linq;
using System.Text;
using
System.Threading.Tasks;
//以上C#を始めるためのお呪い
namespace a
//初心者はお呪い=決まり事と思い一切気にしない
{
class Program
//初心者はお呪い=決まり事と思い一切気にしない
{
static void Main(string[] args)
//私は社長だ。
{
long a; //長整数を入れる変数aを用意
//以下計算
a
= 1;
for (int i = 1; i < 21; i++) a *= i; //繰り返し処理
//以上計算
Console.WriteLine("1×2×・・・×20={0:d}", a); //箱aの中身を表示
}
}
}
実行結果
1×2×・・・×20=2432902008176640000
と正しく計算できます。
ですが、これが限界です。
限界桁数の19桁に達してしまっているからです。
後の講の1つに巨大完全数探索があり、
そこでは1937桁の完全数探索をやります。
C++でも同じです。
C言語の拡大版であるC++の機能を使っても19桁が限界ですから、
これがいかに難しいテーマであるかおわかりでしょう。
ですが、この講義を順に読んでいけば、初心者の皆さんでも充分に組めますよ。
では次の問題を出して第3話を終了します。
@1の2乗+2の2乗+3の2乗+・・・+100の2乗
A5の3乗+7の3乗+9の3乗+・・・+31の3乗