半素数

数学において、半素数（はんそすう、）とは、2つの素数の積で表される合成数である。この2つの素数は同一のものであってもよいため、素数の平方数も半素数である。
半素数は概素数の の例でもある。
定義.
「自然数 が半素数である」とは、 が素数 の積 に等しいことをいう。
例.
例えば、は、 であり はいずれも素数であるから、半素数である。
1から100まで整数に含まれる半素数（斜体は素数の平方数）：
"4", 6, "9", 10, 14, 15, 21, 22, "25", 26, 33, 34, 35, 38, 39, 46, "49", 51, 55, 57, 58, 62, 65, 69, 74, 77, 82, 85, 86, 87, 91, 93, 94, 95, …()
連続する半素数（）の先頭 ：9, 14, 21, 25, 33, 34, 38, 57, 85, 86, 93, 94, … ()
（ の列はを参照）。
異なる素因数からなる半素数：6, 10, 14, 15, 21, 22, 26, 33, 34, 35, 38, 39, 46, 51, 55, 57, 58, 62, …()
素数の2乗（平方数）となる半素数：4, 9, 25, 49, 121, 169, 289, 361, 529, 841, 961, 1369, 1681, 1849, 2209, …()
十進法での半素数の回文数（斜体は平方数）："4", 6, "9", 22, 33, 55, 77, 111, "121", …（）
応用.
半素数は数論や暗号理論（特に公開鍵暗号）では重要な存在であり、例として、RSA暗号やRabin暗号では、桁数が大きな（安全性のために一定の条件を満たす）2個の素数の積が公開鍵として使われている（参考：RSAモジュラス）。2個の素数の積を求めることは容易であるが、この半素数を素因数分解して元の2個の素数を求めることは困難であることが安全性の根拠になっている。
その他、擬似乱数生成器 Blum-Blum-Shub でも同様な半素数を法として初期値を2乗して得られる数列の最下位ビットを乱数列としている。半素数にはブラム数を用いるとよいとされる。ゼロ知識証明で証明対象とされる知識としても、半素数の2個の素因子が利用される。
1974年に送信されたアレシボ・メッセージでは、1679桁の2進数をメッセージとした。この 1679 も半素数である。"n" 行 "m" 列からなるドットピクセルを 0/1 に変換して、さらに1列にして送信されたメッセージを、受信側が元の "n" 行 "m" 列に戻す際に、"n" や "m" を推測し易いように、半素数が選ばれたのである。1679 を素因数分解すると、1679 = 23 × 73 であり、"n" = 23, "m" = 73 か "n" = 73, "m" = 23 のどちらかになる。