C#で素数判定プログラムを作成する方法を解説
数値が素数(プライムナンバー)かどうかを判定するには、ループ処理を使用します。ループの各反復処理の中でif文を用い、対象の数値を1からその数値自身まで順番に割った際の余りが0になるかどうかを確認していきます。
判定ロジックの基本
以下のコードは、1からnまでの数で順に割り算を行い、余りが0になる回数をカウントする部分です。
for (int i = 1; i <= n; i++) {
if (n % i == 0) {
a++;
}
}ここで重要なのがカウンター変数「a」の役割です。ある数値が素数である場合、その数値を割り切れる数は「1」と「その数値自身」の2つだけです。つまり、カウンターaの値が2になったとき、その数値は素数であると判定できます。逆に、aが3以上であれば1と自分自身以外にも約数が存在するため、素数ではないことがわかります。
完全なサンプルコード
それでは、数値が素数かどうかを判定する完全なプログラム例を見てみましょう。
Example
using System;
namespace Demo {
class MyApplication {
public static void Main() {
int n = 17, a = 0;
for (int i = 1; i <= n; i++) {
if (n % i == 0) {
a++;
}
}
if (a == 2) {
Console.WriteLine("{0}: Prime Number", n);
} else {
Console.WriteLine("{0}: Not a Prime Number");
}
Console.ReadLine();
}
}
}
Output
17: Prime Number
コードの解説
このプログラムでは、判定対象の数値として17を変数nに設定しています。forループにより1から17までの各数値で17を割り、余りが0になるケースをカウントします。17の場合、割り切れるのは1と17のみなので、カウンターaは2になります。その結果、「17: Prime Number」という出力が得られ、17が素数であることが確認できます。
なお、この判定方法はシンプルで理解しやすい反面、数値が大きくなると計算量が増えるという特徴があります。パフォーマンスを重視する場合は、判定対象の平方根までの数値のみを確認する方法や、エラトステネスの篩などのアルゴリズムを検討するとよいでしょう。
-
Pythonで数値が二面素数(Dihedral Prime)かどうかを判定する方法
ある整数nが与えられたとき、それが「二面素数(dihedral prime)」であるかどうかを判定する方法を解説します。二面素数とは、その数自体が素数であり、さらに7セグメントディスプレイに表示した際に、表示の向き(通常の向きでも上下逆さまでも)に関わらず、同じ数または別の素数として読み取れる数のことです。例えば、入力がn = 1181の場合、出力はTrueになります。下の数字は上の数字を上下逆さま(180度回転)にして表示したものであり、どちらも素数となっています。アルゴリズムの手順この問題を解くために、以下の手順で進めます。up_side_down() 関数を定義します。引数としてnを受け
-
Pythonで素数を判定するプログラムの書き方を徹底解説
はじめに この記事では、「与えられた数値が素数かどうかを判定する」という問題に対する解決策を、Pythonのコード例とともにわかりやすく解説します。 問題の概要 問題設定:ある数値が与えられたとき、その数が素数であるかどうかを判定するプログラムを作成します。 まず「素数」の定義をおさらいしましょう。1より大きい正の整数のうち、1とその数自身以外に約数を持たない数を素数(そすう)と呼びます。たとえば、2、3、5、7などはそれ以外の約数を持たないため、素数です。 プログラムの考え方 今回作成するプログラムでは、入力された数値が素数かどうかを以下の手順で判定します。 1以下の数値は素数ではない