২ থেকে n পর্যন্ত লুপ চালিয়ে প্রথম যা n কে ভাগ করে, সেটিই স্মলেস্ট ডিভাইজার (১ বাদ দিয়ে)।
উদাহরণ
n = int(input("সংখ্যা দিন: "))
print("সংখ্যা:", n)
divisors = []
for i in range(2, n + 1):
if n % i == 0:
divisors.append(i)
divisors.sort()
print("সর্বনিম্ন ভাজক (১ বাদ দিয়ে):", divisors[0] if divisors else "কোনো নেই")
আউটপুট
সংখ্যা দিন: 56 সংখ্যা: 56 সর্বনিম্ন ভাজক (১ বাদ দিয়ে): 2
ব্যাখ্যা
২ থেকে n পর্যন্ত চেক (১ সব সংখ্যা ভাগ করে, তাই বাদ)۔
প্রথম ভাজক পাওয়া গেলেই ব্রেক করলে দক্ষতর (সর্ট লাগবে না)۔
প্রাইম নম্বরের জন্য স্মলেস্ট ডিভাইজার = নিজে।
অপ্টিমাইজেশন: sqrt(n) পর্যন্ত চেক করলেই চলে।