どーも、みつおです。
問題
それぞれ2つの異なる素因数を持つ連続する2つの数が最初に現れるのは:
14 = 2 × 7
15 = 3 × 5それぞれ3つの異なる素因数を持つ連続する3つの数が最初に現れるのは:
644 = 2^2 × 7 × 23
645 = 3 × 5 × 43
646 = 2 × 17 × 19最初に現れるそれぞれ4つの異なる素因数を持つ連続する4つの数を求めよ. その最初の数はいくつか?
出典:Problem47
解答
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Problem47
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine(Solve());
Console.ReadLine();
}
private static long Solve()
{
long ret = 0;
int i = 1;
int cnt = 0;
while(true)
{
//素因数分解
var soinsubunkai = SoinsuBunkai(i);
//重複削除
var tmpsoinsu = soinsubunkai.Distinct();
//異なる4つの素因数か判定
if (tmpsoinsu.Count() == 4) cnt++;
else cnt = 0;
//連続する4つか判定
if(cnt == 4) break;
//iをインクリメント
i++;
}
//連続する4つの最初の数を取得
ret = i - cnt + 1;
return ret;
}
public static IEnumerable<int> SoinsuBunkai(int n)
{
int i = 2;
int tmp = n;
while (i * i <= n)
{
if (tmp % i == 0)
{
tmp /= i;
yield return i;
}
else i++;
}
if (tmp != 1) yield return tmp;
}
}
}
出力
134043


コメント