এই আর্টিকেলে আমরা নিচের সমস্যা সমাধানের কথা শিখব।
সমস্যা: একটি সংখ্যা দেওয়া আছে, আমাদের সংখ্যাটির সব সম ফ্যাক্টরের যোগফল প্রদর্শন করতে হবে।
অ্যাপ্রোচ
আমরা চেক করি সংখ্যাটি বিজোড় কিনা, যদি বিজোড় হয় তবে কোনো সম ফ্যাক্টর থাকে না, তাই ০ রিটার্ন করি।
যদি সংখ্যাটি সম হয়, তবে আমরা কম্পিউটেশনের মাধ্যমে যাই। ২০ বাদে সব টার্ম মাল্টিপ্লাই হয়ে সম ফ্যাক্টর যোগফল তৈরি করে।
সম ফ্যাক্টরে থেকে সব বিজোড় নম্বর সরিয়ে ফেলার জন্য, আমরা ২০ যেটি ১ কে উপেক্ষা করি। এই স্টেপের পর আমরা শুধু সম ফ্যাক্টর পাই। মনে রাখবেন ২ একমাত্র সম প্রাইম যা আমাদের উপলব্ধ।
চলুন নিচের ইমপ্লিমেন্টেশন দেখি।
উদাহরণ
# math মডিউল
import math
# n এর সব ফ্যাক্টরের যোগফল রিটার্ন করে
def sumofevenFactors(n) :
# যদি n বিজোড় হয়
if (n % 2 != 0) :
return 0
# ট্রাভার্সাল
res = 1
for i in range(2, (int)(math.sqrt(n)) + 1) :
# যদি i, n কে ভাগ করে
count = 0
curr_sum = 1
curr_term = 1
while (n % i == 0) :
count = count + 1
n = n // i
# এখানে আমরা 2^0 অর্থাৎ 1 কে সরিয়ে ফেলি। সব
# অন্যান্য ফ্যাক্টর
if (i == 2 and count == 1) :
curr_sum = 0
curr_term = curr_term * i
curr_sum = curr_sum + curr_term
res = res * curr_sum
# যখন n একটি প্রাইম নম্বর
if (n >= 2) :
res = res * (1 + n)
return res
# মেইন
n = 22
print(sumofevenFactors(n))
আউটপুট
24

সभी ভেরিয়েবল এবং ফাংশন গ্লোবাল স্কোপে ঘোষণা করা হয়েছে যা উপরের চিত্রে দেখা যাচ্ছে।
উপসংহার
এই আর্টিকেলে আমরা শিখেছি কিভাবে একটি সংখ্যার সম ফ্যাক্টরের যোগফল বের করা যায়।