এই নিবন্ধে আমরা নিচের সমস্যা বিবরণের সমাধান নিয়ে আলোচনা করব:
সমস্যা বিবরণ - একটি সংখ্যা n দেওয়া থাকলে, তার সব অনন্য প্রাইম ফ্যাক্টরের গুণফল বের করে রিটার্ন করতে হবে।
উদাহরণস্বরূপ,
Input: num = 11 Output: Product is 11 Explanation: এখানে, ইনপুট সংখ্যা 11 যার শুধু ১টি প্রাইম ফ্যাক্টর এবং সেটি 11। তাই তাদের গুণফল 11।
অプローチ ১
i = 2 থেকে n+1 পর্যন্ত একটি for লুপ ব্যবহার করে চেক করুন i n-এর ফ্যাক্টর কিনা এবং তারপর i প্রাইম নম্বর কিনা, যদি হয় তবে প্রোডাক্ট ভেরিয়েবলে গুণফল স্টোর করুন এবং এই প্রক্রিয়া i = n হওয়া পর্যন্ত চালিয়ে যান।
উদাহরণ
def productPrimeFactors(n):
product = 1
for i in range(2, n+1):
if (n % i == 0):
isPrime = 1
for j in range(2, int(i/2 + 1)):
if (i % j == 0):
isPrime = 0
break
if (isPrime):
product = product * i
return product
# মেইন
n = 18
print(productPrimeFactors(n))
আউটপুট
6
সব ভেরিয়েবলের স্কোপ নিচের চিত্রে দেখানো হয়েছে:

অপ্রোচ ২
যতক্ষণ n ২ দিয়ে বিভাজ্য (সম), ২ প্রিন্ট করুন এবং n কে ২ দিয়ে ভাগ করুন।
ধাপ ১ পরে, n অবশ্যই বিজোড় হবে। এখন i = 3 থেকে n-এর বর্গমূল পর্যন্ত একটি for লুপ শুরু করুন। যতক্ষণ i n কে ভাগ করে, i প্রিন্ট করুন এবং n কে i দিয়ে ভাগ করুন। i যখন n কে ভাগ করতে না পারে, i কে ২ দিয়ে বৃদ্ধি দিয়ে প্রক্রিয়া চালিয়ে যান।
যদি n একটি প্রাইম নম্বর হয় এবং ২ এর চেয়ে বড় হয়, তবে উপরের দুটি ধাপে n ১ হবে না। তাই n প্রিন্ট করুন যদি সেটি ২ এর চেয়ে বড় হয়।
উদাহরণ
import math
def productPrimeFactors(n):
product = 1
# প্রাইম ফ্যাক্টর ২
if (n % 2 == 0):
product *= 2
while (n % 2 == 0):
n = n / 2
# n অবশ্যই বিজোড় হবে
for i in range(3, int(math.sqrt(n)), 2):
# যতক্ষণ i n কে ভাগ করে, i প্রিন্ট করুন এবং n কে ভাগ করুন
if (n % i == 0):
product = product * i
while (n % i == 0):
n = n / i
# n একটি প্রাইম নম্বর যা ২ থেকে বড়
if (n > 2):
product = product * n
return product
# main()
n = 8
print(int(productPrimeFactors(n)))
আউটপুট
2
ভেরিয়েবলগুলোর স্কোপ নিচের চিত্রে উল্লেখ করা হয়েছে:

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