素因数分解した結果をLINQを使用して素数ごとにグループ化する ★BigInteger版
プログラミング言語C#の学習記録(おぼえがき)
素因数分解した結果をLINQを使用して素数ごとにグループ化して表示するプログラム。
BigIntegerを使用するのでコンパイル時にNumerics.dllを参照する必要がある。
csc /reference:System.Numerics.dll ファイル名
(しかしすぐ忘れてしまうのです。そして同じ過ちを繰り返す・・・)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Numerics;
namespace MyFactoring
{
static class Program
{
[STAThread]
static void Main(string[] args)
{
var list = new List<BigInteger>();
BigInteger num, i;
Console.WriteLine("Enter BigInteger number");
num = BigInteger.Parse(Console.ReadLine());
Console.WriteLine("num = {0}", num);
for ( i=2; i<= num; i++ ){
while ( num % i == 0 ){
list.Add(i);
num /= i;
}
}
var grps = list.GroupBy(a=>a);
foreach( var c in grps )
{
Console.WriteLine("{0} {1}", c.First(), c.Count());
}
}
}
}
※なんとなくインデントが変、しかし修正するのは面倒だ。