C++で数が四乗素数(Quartan Prime)かどうかを判定する方法
この記事では、ある数が「四乗素数(Quartan Prime)」であるかどうかを判定するC++プログラムを紹介します。ロジックの詳細に入る前に、まず四乗素数とはどのような数なのかを確認しておきましょう。
四乗素数とは?
四乗素数とは、x4 + y4 の形で表すことができる素数のことです。ここで、x と y はともに正の整数(x, y > 0)である必要があります。
四乗素数には興味深い性質があります。奇数の4乗は必ず16で割ると1余るため、x と y の一方が偶数でもう一方が奇数である場合、その和は16で割ると1余る数になります。したがって、「その数が素数であり、かつ16で割った余りが1である」ことを確認すれば、四乗素数かどうかを判定できます。
四乗素数の例としては、{17, 97, 193, 257, …} などが挙げられます。なお、2 = 14 + 14 と表せるため数学的には四乗素数に含まれますが、2 を16で割った余りは1ではないため、本記事の判定プログラムでは特別扱いされない点に注意してください。
判定の手順
- 対象の数が素数であるかどうかを判定する
- 素数であれば、その数を16で割った余りを求める
- 余りが1であれば四乗素数、そうでなければ四乗素数ではないと判定する
サンプルコード
#include <iostream>
using namespace std;
// 素数かどうかを判定する関数
bool isPrime(int n){
for(int i = 2; i <= n/2; i++){
if(n % i == 0){
return false;
}
}
return true;
}
// 四乗素数かどうかを判定する関数
bool isQuartanPrime(int n) {
if(isPrime(n) && ((n % 16) == 1)){
return true;
}
return false;
}
int main() {
int num = 97;
if(isQuartanPrime(num)){
cout << "この数は四乗素数です";
}else{
cout << "この数は四乗素数ではありません";
}
}
コードの解説
- isPrime関数: 2から n/2 までの整数で順番に割り算を行い、1つでも割り切れる数があれば素数ではないと判断します。
- isQuartanPrime関数: 素数判定の結果と「16で割った余りが1」という条件を論理AND(&&)で組み合わせて、四乗素数かどうかを返します。
実行結果
この数は四乗素数です
この例では 97 を判定しています。97 は素数であり、97 ÷ 16 の余りは1となるため、「四乗素数である」と出力されます。実際に 97 = 24 + 34 = 16 + 81 と表せることからも、この結果が正しいことが確認できます。
-
C++で数値が素数かどうかを判定するプログラムの作成方法
素数とは? 素数(そすう)とは、1より大きい整数のうち、約数が「1」と「その数自身」のみである数のことです。最初の方の素数には以下のようなものがあります。 2, 3, 5, 7, 11, 13, 17 ここでは、入力された数値が素数かどうかを判定するC++プログラムを紹介します。 サンプルプログラム #include <iostream> using namespace std; int main() { int n=17, i, flag = 0; for(i=2; i<=n/2; ++i) { if(n%i==0) {
-
C#で素数かどうかを判定するプログラムの作成方法【初心者向け】
素数とは、1とその数自身以外に約数を持たない、1より大きい自然数のことです。この記事では、C#を使ってある数値が素数かどうかを判定するプログラムの作成方法を解説します。 素数判定の基本的な考え方 素数かどうかを判定するには、forループを使用します。ループ内の各反復処理でif文を使い、対象の数値を1から順番に割ったときの剰余(余り)が0になる回数を調べます。 for (int i = 1; i <= n; i++) { if (n % i == 0) { a++; } } ここではカウンター変数aを用意しています。このカウンターは、数値が素数である場合にの