C++での素数の再帰プログラム
入力として整数が与えられます。目標は、再帰を使用して、入力数Numが素数であるか非素数であるかを見つけることです。
数が素数であるかどうかを確認するには、i=2からi<=Num/2までのトラバースを開始します。いずれかのiがNumで完全に割り切れる場合、素数は1とその数自体でしか割り切れないため、その数は素数ではありません。
例
入力 −数値=32
出力 − 32は非プライムです!
説明 − i=2からi<=32/2までトラバースを開始すると、最初は2で完全に割り切れ、非素数であることを示します。
入力 −数値=43
出力 − 43は素数です!
説明 − i=2からi<=43/2までトラバースを開始すると、2から21までの数値で割り切れなくなります。これは素数であることを示しています。
以下のプログラムで使用されているアプローチは次のとおりです
このアプローチでは、入力番号を受け取る再帰関数checkPrime(int num1、int index)と、2からnum1/2までの値をとるインデックスを使用しています。
基本ケースの場合-:num1 <2の場合、プライムではないため1を返します。
num1 ==2の場合、素数であるため2を返します。
それ以外の場合:-if(index <=num1 / 2)の場合、インデックスがnum1を完全に分割しないポイントに到達したため、素数でのみ可能であるため1を返します。それ以外の場合は、result =checkPrime(num1、index+1を使用して次のインデックスに戻ります。 )
-
入力番号Numを取ります
-
関数checkPrime(int num1、int index)は入力を受け取り、数値が素数の場合は1を返し、それ以外の場合は0を返します。
-
num1 <2の場合、2未満の数値は素数ではないため、0を返します。
-
num1が2または3の場合、1を返します。2と3は素数です。
-
num1%indexが<=num1 / 2の場合、1を最大num1 / 2として返します。num1は完全に分割されていないため、num1は素数です
。 -
result =checkPrime(num1、index + 1)を使用して、次のインデックスを繰り返します。
-
結果を返します。
-
メイン内で得られた結果を印刷します。
例
#include <bits/stdc++.h> using namespace std; int checkPrime(int num1, int index){ if(num1<2){ return 0; } if (num1 == 2 || num1==3){ return 1; } if (num1 % index == 0){ return 0; } if (index <= num1/2){ return 1; } int result=checkPrime(num1, index+1); return (result); } int main(){ int Num = 31; if (checkPrime(Num,2)==1){ cout <<Num<<" is a Prime number !"; } else{ cout <<Num<<" is non Prime!"; } return 0; }
出力
上記のコードを実行すると、次の出力が生成されます
31 is a Prime number!
-
C++での10進数から16進数への変換プログラム
10進数を入力として指定すると、タスクは指定された10進数を16進数に変換することです。 コンピューターの16進数は16を底とし、10進数は10を底とし、0〜9の値で表されますが、16進数は0〜15から始まる数字で、10はA、11はB、12はC、 Dとして13、Eとして14、Fとして15。 10進数を16進数に変換するには、指定された手順に従います- まず、指定された数値を変換数値の基本値で除算します。例: 6789を16を底とする16進数に変換し、商を取得して格納する必要があるため、6789を16で除算します。余りが0〜9の場合はそのまま保存し、余りが10〜15の場合は、文字形式でA-
-
C++での10進数から2進数への変換プログラム
10進数を入力として指定すると、タスクは指定された10進数を2進数に変換することです。 コンピューターの10進数は10進数で表され、2進数は2進数の0と1の2つしかないため、2進数で表されますが、10進数は0〜9から始まる任意の数値にすることができます。 10進数を2進数に変換するには、次の手順に従います- まず、指定された数値を変換数値の基本値で除算します。例: 42を2を底とする2進数に変換し、商を取得して格納する必要があるため、42を2で除算します。余りが0の場合、ビットを0として格納します。それ以外の場合は1です。 取得した商を2進数の基数である2で除算し、ビットを格納し続けます