একটি সংখ্যা 'n' দেওয়া আছে। সংখ্যাটি প্রথ নাম্বার কিনা তা নির্ধারণ করতে হবে।
প্রথ নাম্বার কী?
প্রথ নাম্বারের সংজ্ঞা:
$$N = k \cdot 2^{n} + 1$$
যেখানে, n = ধনাত্মক পূর্ণসংখ্যা, k = বিজোড় ধনাত্মক পূর্ণসংখ্যা।
প্রথম কিছু প্রথ নাম্বার: 3, 5, 9, 13, 17, 25, 33, 41, 49, 57, 65, 81, 97...
ইনপুট
number: 17
আউটপুট
its a proth number
ইনপুট
number: 18
আউটপুট
its not a proth number
পদ্ধতি
- সংখ্যা ইনপুট নিন।
- ফর্মুলা প্রয়োগ করে প্রথ নাম্বার কিনা তা যাচাই করুন।
- শর্ত পূরণ করলে "its a proth number", নাকি "its not a proth number"।
এলগরিদম
Step 1 → bool isPower(int num) // 2^n কিনা তা চেক
return (num && !(num & (num - 1)))
Step 2 → bool isProth(int num)
int k = 1
while (k < (num / k))
if (num % k == 0)
if (isPower(num / k)) return true
k = k + 2
return false
Step 3 → main()
int num = 17
if (isProth(num - 1)) print "its a proth number"
else print "its not a proth number"
উদাহরণ কোড
#include <bits/stdc++.h>
using namespace std;
bool isPower(int num){
return (num && !(num & (num - 1)));
}
bool isProth(int num){
int k = 1;
while (k < (num / k)){
if (num % k == 0){
if (isPower(num / k))
return true;
}
k = k + 2;
}
return false;
}
int main(){
int num = 17;
if (isProth(num - 1))
cout << "its a proth number";
else
cout << "its not a proth number";
return 0;
}
আউটপুট
its a proth number