দেওয়া একটি সংখ্যা n; কাজ হল n সংখ্যার Mobius ফাংশন খুঁজে বের করা।
মোবিয়াস ফাংশন কি?
একটি মোবিয়াস ফাংশন হল সংখ্যা তত্ত্ব ফাংশন যা
দ্বারা সংজ্ঞায়িত করা হয়$$\mu(n)\equiv\begin{cases}0\\1\(-1)^{k}\end{cases}$$
n=0 যদি n-এর এক বা একাধিক বার বার গুণনীয়ক থাকে
n=1 হলে n=1
n=(-1)k যদি n হয় k স্বতন্ত্র মৌলিক সংখ্যার গুণফল
উদাহরণ
ইনপুট:N =17 আউটপুট:-1 ব্যাখ্যা:প্রাইম ফ্যাক্টর:17, k =1, (-1)^k 🠠(-1)^1 =-1 ইনপুট:N =6 আউটপুট:1 ব্যাখ্যা:প্রাইম ফ্যাক্টর:2 এবং 3 , k =2(-1)^k 🠠(-1)^2 =1ইনপুট:N =25আউটপুট:0 ব্যাখ্যা:প্রাইম ফ্যাক্টর হল 5 যা দুবার হয় তাই উত্তর হল 0
প্রদত্ত সমস্যা সমাধানের জন্য আমরা যে পদ্ধতি ব্যবহার করব −
- একটি ইনপুট N নিন।
- i 1 থেকে N এর কম পর্যন্ত পুনরাবৃত্তি করুন N এর বিভাজ্য সংখ্যা পরীক্ষা করুন এবং এটি একটি মৌলিক কি না তা পরীক্ষা করুন।
- যদি উভয় শর্তই সন্তুষ্ট হয় আমরা পরীক্ষা করব যে সংখ্যার বর্গটি N কেও ভাগ করে তাহলে 0 ফেরত আসবে।
- অন্যথায় আমরা প্রাইম ফ্যাক্টরগুলির গণনা বৃদ্ধি করি, যদি গণনা সংখ্যা জোড় হয় তাহলে 1 ফেরত দিন এবং যদি এটি বিজোড় রিটার্ন -1 হয়।
- ফলাফল প্রিন্ট করুন।
অ্যালগরিদম
StartStep 1→ ফাংশন বুলে isPrime(int n) ঘোষণা করুন i If n <2 তারপর, i =2 এবং i * i <=n এবং i++ যদি n % i ==0 ফেরত আসে তাহলে মিথ্যা শেষ করুন trueStep 2→ int mobius(int N) ফাংশনে i এবং p =0 যদি N ==1 হয়, তাহলে 1 এন্ড রিটার্ন করুন i =1 এবং i <=N এবং i++ যদি N % i ==0 &&isPrime( i) যদি (N % (i * i) ==0) রিটার্ন 0 Else Increment p by 1 End যদি End যদি রিটার্ন (p % 2 !=0)? -1 :1ধাপ ৩উদাহরণ
#includeনেমস্পেস std;// ফাংশন ব্যবহার করে n প্রাইম নাকি notbool isPrime(int n) { int i; যদি (n <2) মিথ্যা ফেরত দেয়; জন্য ( i =2; i * i <=n; i++) যদি (n % i ==0) মিথ্যা ফেরত দেয়; রিটার্ন true;}int mobius(int N) {int i; int p =0; //যদি n হয় 1 যদি (N ==1) রিটার্ন 1; // একটি প্রধান ফ্যাক্টরের জন্য আমি পরীক্ষা করি যে i^2ও // একটি ফ্যাক্টর কিনা। ( i =1; i <=N; i++) { if (N % i ==0 &&isPrime(i)) { // N % (i * i) =i^2 দ্বারা বিভাজ্য কিনা তা পরীক্ষা করুন =0) রিটার্ন 0; অন্যথায় // i শুধুমাত্র একবার ঘটে, p p++ বাড়ান; } } // সমস্ত প্রাইম ফ্যাক্টর শুধুমাত্র একবারই থাকে // রিটার্ন 1 যদি p হয় অন্য -1 রিটার্ন (p % 2 !=0)? -1 :1;}// ড্রাইভার কোডইন্ট মেইন() { int N =17; cout < আউটপুট
N =-1