এই সমস্যায়, আমাদের দুটি সংখ্যা দেওয়া হয়েছে এবং আমাদের অয়লারেরচার বর্গ আইডেন্টিটি ব্যবহার করে সংখ্যার গুণফল বের করতে হবে।
অয়লারের ফোর স্কোয়ার আইডেন্টিটি দুটি সংখ্যার গুণফল বের করার পদ্ধতি যা চার বর্গ এর যোগফল ব্যবহার করে উপস্থাপন করা যেতে পারে সংখ্যার সংখ্যা যদি চারটি বর্গক্ষেত্রের সমষ্টি হিসাবে উপস্থাপন করা যায়।
গুণফল a * b কে চারটি বর্গক্ষেত্রের যোগফল হিসাবে উপস্থাপন করা যেতে পারে যদি
a =x1
2
+ x2
2
+ x3
2
+ x4
2
b =y1
2
+ y2
2
+ y3
2
+ y4
2
a * b =z1
2
+ z2
2
+ z3
2
+ z4
2
সমস্যাটি বোঝার জন্য একটি উদাহরণ নেওয়া যাক,
ইনপুট:
a =54 =2*2 + 3*3 + 4*4 + 5*5
b =10 =1*1 + 2*2 + 1*1 + 2*2
আউটপুট: 1*1 + 1*1 + 3*3 + 23*23
ব্যাখ্যা:
a এবং b =540,
এর গুণফলযা একাধিক উপায়ে উপস্থাপন করা যেতে পারে। আমরা এখানে একটি সমাধান বিবেচনা করব,
540 =1*1 + 1*1 + 3*3 + 23*23 =1 + 1 + 9 + 529
সমাধান পদ্ধতি -
সমস্যার একটি সহজ সমাধান হল একটি ট্রায়াল পদ্ধতি ব্যবহার করে সমস্যা সমাধানের জন্য চারটি বর্গাকার সংমিশ্রণের প্রতিটি চেষ্টা করে। এর জন্য আমরা নেস্টেড লুপ ব্যবহার করব, প্রতিটি বর্গ মানের জন্য একটি নেস্টেড লুপ। এবং তারপর গণনা করা মানটি সন্ধান করুন এবং সমষ্টি উপস্থাপনের সমস্ত সম্ভাব্য সমন্বয় মুদ্রণ করুন।
এই সমাধানটি একটু জটিল এবং সময়ের জটিলতা যথার্থ
O( (a*b)
4
)
আমাদের সমাধানের কাজ চিত্রিত করার জন্য প্রোগ্রাম,
উদাহরণ
#includeনেমস্পেস ব্যবহার করে std;void findEulerSquareNumberValue(int a, int b) { int prod =a * b; int sumSquare =0; জন্য (int x =0; x <=sqrt(prod); x++) { (int y =x; y <=sqrt(prod); y++) { এর জন্য (int z =y; z <=sqrt(prod); z++) { (int k =z; k <=sqrt(prod); k++) { sumSquare =(x*x) + (y*y) + (z*z) + (k*k); if (sumSquare ==prod) { cout<<"পণ্য "<