第3講 繰り返し処理for文
第3話 階乗の計算
1×2×・・・×8の解答例
#include<iostream> //入出力のために組み込む
using namespace std; //coutを使えるようにするために必要
int main() {
  int a; //整数を入れる箱aを用意
  a = 1;
  //繰り返し処理
  for(int i=1;i<9;i++){
    a=a*i;
  }
  cout<<"1×2×・・・×8="<<a<<endl; //箱aの中身を表示
  return(0); //mainを閉じるためのお呪い。
}
実行結果
1×2×・・・×8=40320

皆さんの中には
#include<iostream> //入出力のために組み込む
using namespace std; //coutを使えるようにするために必要
int main() {
  int a; //整数を入れる箱aを用意
  a = 1;
  //繰り返し処理
  for(int i=1;i<21;i++){
    a=a*i;
  }
  cout<<"1×2×・・・×20="<<a<<endl; //箱aの中身を表示
  return(0); //mainを閉じるためのお呪い。
}
と変更して実行された方もいらっしゃるのではないでしょうか。
ところが実行結果は
1×2×・・・×20=-2102132736
とおかしな結果になります。

#include<iostream> //入出力のために組み込む
using namespace std; //coutを使えるようにするために必要
int main() {
  
long long a,i; //整数を入れる箱aを用意
  a = 1;
  //繰り返し処理
  for(i=1;i<21;i++){
    a=a*i;
  }
  cout<<"1×2×・・・×20="<<a<<endl; //箱aの中身を表示
  return(0); //mainを閉じるためのお呪い。
}
実行結果
1×2×・・・×20=2432902008176640000
と正しく計算できます。
ですが、これが限界です。
限界桁数の19桁に達してしまっているからです。

後の講の1つに巨大完全数探索があり、
そこでは1937桁の完全数探索をやります。
C言語の拡大版であるC++の機能を使っても19桁が限界ですから、
これがいかに難しいテーマであるかおわかりでしょう。
ですが、この講義を順に読んでいけば、初心者の皆さんでも充分に組めますよ。


では次の問題を出して第3話を終了します。
@1の2乗+2の2乗+3の2乗+・・・+100の2乗
A5の3乗+7の3乗+9の3乗+・・・+31の3乗



第2話へ 第4話へ
 
002

初心者のための excel 2016 マクロ VBA 入門講義 基礎から応用まで
vc++ c言語 c++ 入門 初心者 基礎から応用まで
eclipse c++ 入門
魔方陣 数独で学ぶ VBA 入門

数独のシンプルな解き方・簡単な解法の研究
VB講義へ
VB講義基礎へ
初心者のための世界で一番わかりやすいVisual C++入門基礎講座
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座
初心者のための世界で一番わかりやすいVBA入門講義(基礎から応用まで)
初心者のための VC++による C言語 C++ 入門 基礎から応用まで第1部
eclipse java 入門
java 入門 サイト 基礎から応用まで
本サイトトップへ