中学生でもわかる素因数分解のプログラム【C++】

プログラミング

作る。

完成したものがこちらです。

#include <iostream>
using namespace std;

unsigned long int prime_number;
unsigned long int number;
int main(){
    cout << "素因数分解をします。数を入力してください。\n";
    cin >> number;
    cout << "数を出力します。\n";
    for(prime_number=2; prime_number <= number;){
        if(number%prime_number == 0){
            cout << prime_number << '\n';
            number = number/prime_number;
        }
        if(number%prime_number != 0){
            prime_number++;
        }
    }
    cout << "素因数分解が終わりました。\n";
    return 0;
}

仕組みは、

  1. unsigned long int」という型の変数「prime_number」と「number」の二つを定義する。
  2. cout <<」を使って、「“素因数分解をします。数を入力してください。”」と出力する。「\n」は、改行のことを示している。「endl」でもいい。
  3. 「cin >>」を使って、入力された値(これから素因数分解される値)を変数「number」に代入する。
  4. for文を使う。変数「prime_number」を初期化(2を代入)する。この繰り返しは、変数「prime_number」が変数「number」より大きくなるまで続く。
  5. if文を使う。「%」は、あまりを表している。よって、この文章は、変数「prime_number」を変数「number」で割った余が0になる(=割り切れる)時に実行される。C++のコードの中では、「=」は、左辺に右辺の値を代入という意味であり。現実世界での「」は「==」と書く。
  6. if文の中が実行されると、その時の変数「prime_number」の値が出力され、変数「number」の値に「number」÷「prime_number」の値が代入される。
  7. if文を使う。「!=」は、右辺と左辺が等しくないことを表している。よって、この文章は、「number」を「prime_number」で割った値が0ではない(=割り切れない)時に実行される。「++」は、「その変数の値を+1」する動作を表している。
  8. cout <<」を使って、「“素因数分解が終わりました”」と出力する。
  9. 「return 0 ;」は簡単に言えば「。」みたいなもの。プログラムを終了すること。

おまけ

if文の部分は、二つに分けず、「if~else文」を使うこともできる。これは、「if」の文の条件が成り立たなかった場合に「else」の文が実行されるものである。これを使うと、このようになる。

#include <iostream>
using namespace std;

unsigned long int prime_number;
unsigned long int number;
int main(){
    cout << "素因数分解をします。数を入力してください。\n";
    cin >> number;
    cout << "数を出力します。\n";
    for(prime_number=2; prime_number <= number;){
        if(number%prime_number == 0){
            cout << prime_number << '\n';
            number = number/prime_number;
    }
        else{
            prime_number++;
        }
    }
    cout << "素因数分解が終わりました。\n";
    return 0;
}

コメント

タイトルとURLをコピーしました