前書き
結婚式のご祝儀は一般的には3万円とされています。
しかし3万円は2で割り切れるのであんまり良くない数字です。
なので3万円以上で一番小さい素数を探してそれを御祝儀として渡すことにしました。
(これ冷静に考えて結婚するのは2人なので2で割り切れなかったら問題なくないですか?
コード
こんな感じで合っていますか?
その数が素数かどうか判定するのにはfor文で2からn-1まで割れるか確認しなくても
2から$\sqrt(n) $までで良さそうな気がしたのでそれでやってみました。
これ0のときは考えてないんですけど0は素数なので問題ないですね。
public static class PrimeFinder
{
public static void Main()
{
Console.WriteLine("入力した数以上で一番小さい素数を探します。数字を入力してください");
bool isnum = false;
int num = 0;
var input = Console.ReadLine();
while (!isnum)
{
try
{
num = Int32.Parse(input);
isnum = true;
}
catch
{
Console.WriteLine("数字を入力してください");
input = Console.ReadLine();
}
}
while (true)
{
if (isPrimenumber(num))
{
Console.WriteLine("入力された数以上で一番小さい素数は:" + num.ToString());
break;
}
num++;
}
Console.WriteLine("任意のキーを入力してください");
Console.ReadKey();
bool isPrimenumber(int num)
{
for (int i = 2; i * i <= num; ++i)
{
if (num % i == 0)
{
return false;
}
}
return true;
}
}
}
結果
これ実行してもらったらわかるんですけどご祝儀が3万円の場合は、
一番近い素数は30011円でした。
あんまり小銭がジャラジャラしてなくて楽しくないですね。
友達の結婚式はお料理代が31900円なのでそれで計算すると、
31907円でした。