一週間で身につくC# の勉強中15
もう一つのprob8-12
2から100の乱数を発生させ、その数を素因数分解するプログラムを作成しなさい。因数分解とは、 数値を、素数の積で表すことであり、例えば、72 = 2 × 2 × 2 × 3 × 3といったように表現することである。
考え方のポイント
- 同じ数字で何度も割る必要があるのでwhileで繰り返す。
- 数字× という形で出力するが最後だけ数字だけで出力
- 最後の数字は割った答えが1になる数字
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace prob8_12_2 { class Program { static void Main(string[] args) { Random r = new Random(); int kazu = r.Next(2, 101); Console.Write("{0} = ", kazu); for (int i = 2; i < 101; i++) { while (kazu % i == 0) //割り切れる間、同じ数iで割り続ける { if (kazu / i == 1) //答えが1になるのは最後の数字 { break; } else { kazu = kazu / i; Console.Write("{0} × ", i); } } if (kazu % i == 0 && kazu / i == 1) //最後の数字の処理 { Console.WriteLine(i); break; } } } } }