一週間で身につく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;
                }
            }
        }

    }
}