ইন্ট্রো
কিছু ধনাত্মক পূর্ণসংখ্যা গ্রহণের প্রক্রিয়া বিবেচনা এন কিছু বেস খ এবং ডানে অঙ্ক বেস তার উপস্থাপনা সঙ্গে প্রতিটি অঙ্ক প্রতিস্থাপন।
- ডানদিকে অঙ্কটি 0 হলে বেস বি ব্যবহার করুন ।
- ডানদিকে অঙ্কটি যদি 1 হয় তবে 0 এর সাথে টালি চিহ্ন হিসাবে অ্যানারি ব্যবহার করুন ।
- ডানদিকে কোনও অঙ্ক না থাকলে (যেমন আপনি সেই স্থানে রয়েছেন), সর্বাধিক উল্লেখযোগ্য অঙ্কের কাছাকাছি লুপ করুন।
উদাহরণ হিসাবে এন = 160 এবং খ = 10 আসুন প্রক্রিয়াটি চালানোয় এমন দেখাচ্ছে:
The first digit is 1, the digit to the right is 6, 1 in base 6 is 1.
The next digit is 6, the digit to the right is 0, 0 is not a base so use b, 6 in base b is 6.
The last digit is 0, the digit to the right (looping around) is 1, 0 in base 1 is the empty string (but that's ok).
Concatenating '1', '6', and '' together gives 16, which is read in the original base b = 10.
ঠিক একই পদ্ধতি তবে ডানের পরিবর্তে বাম দিকে সরানোও করা যেতে পারে:
The first digit is 1, the digit to the left (looping around) is 0, 0 is not a base so use b, 1 in base b is 1.
The next digit is 6, the digit to the left is 1, 6 in base 1 is 000000.
The last digit is 0, the digit to the left is 6, 0 in base 6 is 0.
Concatenating '1', '000000', and '0' together gives 10000000, which is read in the original base b = 10.
সুতরাং, আমরা 160 ( বি = 10 এর জন্য) সম্পর্কিত 16 টি সংখ্যা তৈরি করেছি : 16 এবং 10000000।
আমরা n কে একটি ছদ্মবেশী সংখ্যা হিসাবে সংজ্ঞায়িত করব যদি এটি সমানভাবে এই প্রক্রিয়াটিতে উত্পন্ন দুটি সংখ্যার মধ্যে একটিরও 2 বা ততোধিক অংশে বিভক্ত হয়
উদাহরণে এন ধূর্ততা কারণ 160 ভাগ 10000000 ঠিক 62500 বার।
203 ধূর্ত নয় কারণ ফলাফলসংখ্যা 2011 এবং 203 নিজেই, যা 203 2 বা ততোধিক বারে সমানভাবে মাপসই করতে পারে না।
চ্যালেঞ্জ
(বাকি সমস্যার জন্য আমরা কেবল খ = 10 বিবেচনা করব )
চ্যালেঞ্জটি হ'ল এমন একটি প্রোগ্রাম লিখুন যা সর্বাধিক ধূর্ত সংখ্যা খুঁজে পায় যাও প্রধান।
প্রথম 7 ধূর্ত প্রাইমস (এবং আমি এখনও অবধি যা কিছু পেয়েছি) সেগুলি হ'ল:
2
5
3449
6287
7589
9397
93557 <-- highest so far (I've searched to 100,000,000+)
আরও অস্তিত্ব আছে কিনা তা সম্পর্কে আমি আনুষ্ঠানিকভাবে নিশ্চিত নই, তবে আমি তাদের প্রত্যাশা করি। আপনি যদি প্রমাণ করতে পারেন যে চূড়ান্তভাবে অনেকগুলি রয়েছে (বা না হয়) আমি আপনাকে +200 অনুগ্রহমূলক প্রতিনিধি দেব।
বিজয়ী হবেন সেই ব্যক্তি যিনি সর্বোচ্চ ধূর্ত প্রাইম সরবরাহ করতে পারেন তবে শর্ত থাকে যে তারা অনুসন্ধানে সক্রিয় ছিল এবং ইচ্ছাকৃতভাবে অন্যের কাছ থেকে গৌরব নিচ্ছে না।
বিধি
- আপনি যে কোনও প্রাইম সন্ধানের সরঞ্জামগুলি ব্যবহার করতে পারেন।
- আপনি সম্ভাব্য প্রাইম টেস্টার ব্যবহার করতে পারেন।
- আপনি অন্য ব্যক্তির কোডটি এট্রিবিউশন সহ পুনরায় ব্যবহার করতে পারেন । এটি একটি সাম্প্রদায়িক প্রচেষ্টা। কাথথ্রোট কৌশলগুলি সহ্য করা হবে না।
- আপনার প্রোগ্রামটি অবশ্যই সক্রিয়ভাবে প্রধানের জন্য অনুসন্ধান করতে হবে। আপনি আপনার সর্বাধিক পরিচিত কারিগরী প্রাইমে শুরু করতে পারেন।
- আপনার প্রোগ্রামটি অ্যামাজন ইসি 2 টি 2। মিডিয়াম উদাহরণগুলির 4 ঘন্টার মধ্যে (সমস্ত একবারে চারটি বা চার ঘন্টার জন্য একটির মধ্যে বা কিছু) এর মধ্যে পরিচিত সমস্ত ধূর্ত প্রাইমগুলি গণনা করতে সক্ষম হওয়া উচিত । আমি তাদের উপর এটি পরীক্ষা করব না এবং অবশ্যই আপনার প্রয়োজন হবে না। এটি কেবল একটি মানদণ্ড।
উপরের টেবিলটি তৈরি করার জন্য আমি আমার পাইথন 3 কোডটি এখানে ব্যবহার করেছি:
import pyprimes
def toBase(base, digit):
a = [
['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'],
['', '0', '00', '000', '0000', '00000', '000000', '0000000', '00000000', '000000000' ],
['0', '1', '10', '11', '100', '101', '110', '111', '1000', '1001'],
['0', '1', '2', '10', '11', '12', '20', '21', '22', '100'],
['0', '1', '2', '3', '10', '11', '12', '13', '20', '21'],
['0', '1', '2', '3', '4', '10', '11', '12', '13', '14'],
['0', '1', '2', '3', '4', '5', '10', '11', '12', '13'],
['0', '1', '2', '3', '4', '5', '6', '10', '11', '12'],
['0', '1', '2', '3', '4', '5', '6', '7', '10', '11'],
['0', '1', '2', '3', '4', '5', '6', '7', '8', '10']
]
return a[base][digit]
def getCrafty(start=1, stop=100000):
for p in pyprimes.primes_above(start):
s = str(p)
left = right = ''
for i in range(len(s)):
digit = int(s[i])
left += toBase(int(s[i - 1]), digit)
right += toBase(int(s[0 if i + 1 == len(s) else i + 1]), digit)
left = int(left)
right = int(right)
if (left % p == 0 and left // p >= 2) or (right % p == 0 and right // p >= 2):
print(p, left, right)
if p >= stop:
break
print('DONE')
getCrafty()