এখানে খুব বোবা উপায়:
def divisorGenerator(n):
for i in xrange(1,n/2+1):
if n%i == 0: yield i
yield n
আমি যে ফলাফলটি পেতে চাই তা একইরকম, তবে আমি একটি স্মার্ট অ্যালগরিদম চাই (এটি অত্যন্ত ধীর এবং বোবা :-)
আমি প্রাথমিক কারণগুলি এবং তাদের বহুগুণ দ্রুত খুঁজে পেতে পারি। আমি একটি জেনারেটর রয়েছি যা এইভাবে ফ্যাক্টর উত্পন্ন করে:
(গুণক 1, গুণনক 1)
(গুণক 2, গুণক 2)
(গুণক 3, গুণন 3)
এবং আরও ...
অর্থাত্ আউটপুট
for i in factorGenerator(100):
print i
হ'ল:
(2, 2)
(5, 2)
আমি যা করতে চাই তার জন্য এটি কতটা দরকারী তা আমি জানি না (আমি অন্যান্য সমস্যার জন্য কোড করেছিলাম) যাইহোক, আমি বুদ্ধিমানভাবে তৈরি করার উপায় চাই
for i in divisorGen(100):
print i
এটি আউটপুট:
1
2
4
5
10
20
25
50
100
আপডেট: গ্রেগ হিউগিল এবং তার "স্মার্ট ওয়ে" কে অনেক ধন্যবাদ :) 100000000 এর সমস্ত বিভাজক গণনা করা 391 দশকের বিপরীতে তার পথের সাথে 0.01 সেকেন্ড নিয়েছিল যে মাইন্ডটি খুব শীতল করেছে: ডি
আপডেট 2: এটি এই পোস্টের সদৃশ বলে বলা বন্ধ করুন । প্রদত্ত সংখ্যার বিভাজকের সংখ্যা গণনা করার জন্য সমস্ত বিভাজক গণনা করার দরকার নেই। এটি অন্যরকম সমস্যা, আপনি যদি ভাবেন যে এটি না হয় তবে উইকিপিডিয়ায় "ডিভায়ার ফাংশন" সন্ধান করুন। পোস্ট করার আগে প্রশ্ন এবং উত্তরটি পড়ুন, আপনি যদি বিষয়টি বুঝতে না পারেন তবে কেবল দরকারী এবং ইতিমধ্যে প্রদত্ত উত্তরগুলি যুক্ত করবেন না।