using System; using System.Collections; class Start { public static void Main() { Console.Write("input <- "); ulong input; try { input = Convert.ToUInt64(Console.ReadLine()); } catch ( OverflowException ex ) { Console.WriteLine(ex.Message); return; } DateTime start = DateTime.Now; ArrayList answer = executeSoin(input); Console.Write("\n( elapsed time : "); Console.Write(DateTime.Now - start); Console.WriteLine(")\n"); printAnswer(answer); } private static ArrayList executeSoin(ulong arg) { ulong divide = 2; ulong end = Convert.ToUInt64(Math.Sqrt(arg)); ArrayList ret = new ArrayList(); while ( divide <= end ) { if ( arg % divide == 0 ) { ret.Add(divide); arg /= divide; ArrayList buf = executeSoin(arg); if ( buf.Count == 0 && arg >= 2 ) { ret.Add(arg); } else { ret.AddRange(buf); } break; } if ( divide == 2 ) { divide += 1; } else { divide += 2; } } return ret; } private static void printAnswer(ArrayList arg) { Console.Write("answer -> "); if ( arg.Count == 0 ) { Console.WriteLine("this is a prime number"); } else { for ( int i = 0; i < arg.Count; i++ ) { Console.Write(arg[i] + " "); } Console.WriteLine(string.Empty); } } }