第20講 if文以外のループ処理  
第6話 漏れている数の解明
何かカウントされていないか明らかにするのには、
素数を表示させて見ればわかります。
#include<iostream>
#include<math.h>
using namespace std;
using namespace System;
int cn;
void f(int a);
char h(int a);
int main(){
  int n;
  DateTime^ hj=DateTime::Now;
  cout<<"素数の探索範囲をキーボードから入力してください。"<<endl<<"n=";
  scanf("%d",&n);
  cn=1;
  f(n);
  DateTime^ ow=DateTime::Now;
  TimeSpan sa=ow->Subtract(*hj);
  cout<<"1から"<<n<<"までの素数の総数は"<<cn<<"です。"<<endl;
  cout<<"計算時間は"<<sa.TotalSeconds<<"秒です。"<<endl;
}
void f(int a){
  int i=3;
  cout<<"2"<<" ";
  do{
    if(h(i)){
      cout<<i<<" ";
      cn++;
    }
    i+=2;
  }while(i<=a);
  cout<<endl;
}
char h(int a){
  int i=3;
  do{
    if(a%i==0)return(0);
    i+=2;
  }while(i<=(int)sqrt((double)a));
  return(1);
}
実行結果
C++
画面を見ればお分かりですね。
3をカウントしてみません。
原因を解明するときに、注釈文を入れたり外したりしながら、
絞っていく方法を是非頭に刻んでください。
注釈文による原因の絞り込みはビルドエラー解明にも使えます。
後に、ソースを書くコツ、ビルドエラー解明のコツという講を設けて詳しく説明しますので、
その講も是非熟読してください。
尚、エラー対策、ソースを書くコツやバックアップの方法につきましては
初心者 のためのVC++ 入門 C++ 入門 C 入門 基礎から応用まで(vc++講義第1部)
の第1講 始めようVisual C++☆☆
 第6話 ビルドエラーとその対策
 第7話 バックアップの方法とソースを書くコツnew!☆☆☆(ここは必読です。)
初心者のための VC++ 入門 (C++ 入門) 講義 基礎から応用まで(第3部)
第19講 特殊種による魔方陣ソフトの高速化 ☆
 第8話 ソースを書く際のコツ☆☆☆(ここは必読です。)
も熟読しておくことをお勧めします。

原因を考えてみてください。
ヒントは、前判断と後判断にあります。


第5話へ 第7話へ

戻る

C言語 C++講義第1部へ
VB講義へ
VB講義基礎へ

vc++講義へ第1部へ
初心者のための世界で一番わかりやすいVisual C++入門基礎講座
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座
初心者のための世界で一番わかりやすいVBA入門講義(基礎から応用まで)