作る。
完成したものがこちらです。
#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;
}
仕組みは、
- 「unsigned long int」という型の変数「prime_number」と「number」の二つを定義する。
- 「cout <<」を使って、「“素因数分解をします。数を入力してください。”」と出力する。「\n」は、改行のことを示している。「endl」でもいい。
- 「cin >>」を使って、入力された値(これから素因数分解される値)を変数「number」に代入する。
- for文を使う。変数「prime_number」を初期化(2を代入)する。この繰り返しは、変数「prime_number」が変数「number」より大きくなるまで続く。
- if文を使う。「%」は、あまりを表している。よって、この文章は、変数「prime_number」を変数「number」で割った余が0になる(=割り切れる)時に実行される。C++のコードの中では、「=」は、左辺に右辺の値を代入という意味であり。現実世界での「=」は「==」と書く。
- if文の中が実行されると、その時の変数「prime_number」の値が出力され、変数「number」の値に「number」÷「prime_number」の値が代入される。
- if文を使う。「!=」は、右辺と左辺が等しくないことを表している。よって、この文章は、「number」を「prime_number」で割った値が0ではない(=割り切れない)時に実行される。「++」は、「その変数の値を+1」する動作を表している。
- 「cout <<」を使って、「“素因数分解が終わりました”」と出力する。
- 「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;
}
コメント