C#で素数かどうかを判定するプログラムの作成方法【初心者向け】
素数とは、1とその数自身以外に約数を持たない、1より大きい自然数のことです。この記事では、C#を使ってある数値が素数かどうかを判定するプログラムの作成方法を解説します。
素数判定の基本的な考え方
素数かどうかを判定するには、forループを使用します。ループ内の各反復処理でif文を使い、対象の数値を1から順番に割ったときの剰余(余り)が0になる回数を調べます。
for (int i = 1; i <= n; i++) {
if (n % i == 0) {
a++;
}
}
ここではカウンター変数aを用意しています。このカウンターは、数値が素数である場合にのみ2回インクリメントされます。それは「1」と「その数自身」で割り切れる瞬間だけだからです。したがって、ループ終了後にa の値が 2 であれば、その数は素数であると判断できます。
完全なサンプルコード
それでは、数値が素数かどうかを判定する完全なプログラムを見てみましょう。ここでは例として「5」が素数かどうかを判定します。
using System;
namespace Demo {
class MyApplication {
public static void Main() {
int n = 5, a = 0;
for (int i = 1; i <= n; i++) {
if (n % i == 0) {
a++;
}
}
if (a == 2) {
Console.WriteLine("{0} is a Prime Number", n);
} else {
Console.WriteLine("Not a Prime Number");
}
Console.ReadLine();
}
}
}
実行結果
5 is a Prime Number
このように、5は約数として「1」と「5」の2つしか持たないため、「素数である」と出力されます。
補足:処理を高速化するポイント
上記の方法はシンプルで分かりやすい反面、大きな数値に対しては非効率です。判定速度を改善したい場合は、以下のような工夫が有効です。
- ループ範囲を「2 から n/2 まで」に限定する
- さらに効率化したい場合は「2 から √n(平方根)まで」の範囲で割り切れるかどうかを確認する
- 約数が1つ見つかった時点で即座にfalseを返すことで、無駄な計算を省く
これらの最適化により、特に大きな数値を扱う際のパフォーマンスが大幅に向上します。
-
Pythonで数値が二面素数(Dihedral Prime)かどうかを判定する方法
ある整数nが与えられたとき、それが「二面素数(dihedral prime)」であるかどうかを判定する方法を解説します。二面素数とは、その数自体が素数であり、さらに7セグメントディスプレイに表示した際に、表示の向き(通常の向きでも上下逆さまでも)に関わらず、同じ数または別の素数として読み取れる数のことです。例えば、入力がn = 1181の場合、出力はTrueになります。下の数字は上の数字を上下逆さま(180度回転)にして表示したものであり、どちらも素数となっています。アルゴリズムの手順この問題を解くために、以下の手順で進めます。up_side_down() 関数を定義します。引数としてnを受け
-
Pythonで素数を判定するプログラムの書き方を徹底解説
はじめに この記事では、「与えられた数値が素数かどうかを判定する」という問題に対する解決策を、Pythonのコード例とともにわかりやすく解説します。 問題の概要 問題設定:ある数値が与えられたとき、その数が素数であるかどうかを判定するプログラムを作成します。 まず「素数」の定義をおさらいしましょう。1より大きい正の整数のうち、1とその数自身以外に約数を持たない数を素数(そすう)と呼びます。たとえば、2、3、5、7などはそれ以外の約数を持たないため、素数です。 プログラムの考え方 今回作成するプログラムでは、入力された数値が素数かどうかを以下の手順で判定します。 1以下の数値は素数ではない