একটি সংখ্যার সন্ধান করুন যা সমস্ত পূর্ণসংখ্যার মোড কিউ তৈরি করে


9

পূর্ণসংখ্যার মডুলোটি qযেখানে qপ্রধান সেগুলি বিবেচনা করুন , একটি জেনারেটর এমন কোনও পূর্ণসংখ্যা 1 < x < qযাতে যাতে এবং এর মধ্যে পূর্ণসংখ্যার সমস্তটি x^1, x^2, ..., x^(q-1)কভার হয় । উদাহরণস্বরূপ, পূর্ণসংখ্যা মডুলো 7 বিবেচনা করুন (যা আমরা লিখি )। তারপরে সমস্ত মানগুলি প্রয়োজন অনুসারে সমস্ত পূর্ণসংখ্যা কভার করে ।q-11q-1Z_73, 3^2 mod 7 = 2, 3^3 = 27 mod 7 = 6, 3^4 = 81 mod 7 = 4, 3^5 = 243 mod 7 = 5, 3^6 = 729 mod 7 = 13, 2, 6, 4, 5, 11..6

কাজটি এমন কোড লিখন যা একটি ইনপুট নেয় nএবং এর জন্য একটি জেনারেটর আউটপুট করে Z_n। আপনি অবশ্যই কোনও বিল্টিন বা গ্রন্থাগার এটি ব্যবহার করতে পারবেন না this

আপনার কোডটির কার্য সম্পাদনের একমাত্র সীমাবদ্ধতা হ'ল এটি অবশ্যই শেষ হওয়ার জন্য আপনি এটি পরীক্ষা করেছেন n = 4257452468389

দ্রষ্টব্য যে এর শক্তি 2^n মানে । এটি ক্ষয়ক্ষতির প্রতিনিধিত্ব করে।2n^


হুম ... 1 < x < qচ্যালেঞ্জটি অনেক সহজ ইমো করে তোলে।
এরিক আউটগল্ফার

@ এরিকথ আউটগল্ফার আমি নিশ্চিত নই আপনি কি বলতে চাইছেন তা আমি জানি? এগুলি কেবল সমস্ত পৃথক পূর্ণসংখ্যা যা 0 বা 1 নয়

আমি বোঝাতে চাইছি যে অনেকে সম্ভবত যা ভাবেন তার চেয়ে সহজ ... বা পিপিসিজিতে কিছু নিষ্ক্রিয় মুহুর্ত হতে পারে।
এরিক আউটগল্ফার

3
তবে আমি মনে করি যে এটির একটি বৃহত সংখ্যায় সমাপ্তির জন্য এটির পরীক্ষা করা লোকের প্রয়োজন অপরিহার্য ... মূলত টিও কেবল স্মৃতি-ত্রুটি হবে।
এরিক আউটগল্ফার

@ ল্যাম্বিক এমন কোনও মামলা রয়েছে যেখানে নির্দিষ্ট সংখ্যার জন্য কোনও জেনারেটর নেই? কিছু পরীক্ষার কেস ভাল হবে।
মিঃ এক্সকোডার

উত্তর:


13

পাইথ, 16 15 বাইট

f-1m.^T/tQdQPtQ

পরীক্ষা স্যুট

যদি পি ইনপুট হয় তবে আমরা জানি যে ^ (p-1) = 1 মোড পি, সুতরাং আমাদের কেবল কোনও ছোট একটি এর জন্য সেই জি-এ! = 1 মোড পি পরীক্ষা করা দরকার। তবে এটি সম্ভব হওয়ার জন্য একটি অবশ্যই পি -1 এর একটি ফ্যাক্টর হতে হবে এবং সেই সম্পত্তির সাথে কোনও কোনও একেরও সেই সম্পত্তি থাকবে, সুতরাং আমাদের কেবল সেই জি only (পি -1) / কিউ) পরীক্ষা করা দরকার! = 1 মোডের p-1 এর সমস্ত মৌলিক কারণগুলির জন্য। সুতরাং, আমরা ক্রমবর্ধমান ক্রমে সমস্ত পূর্ণসংখ্যার জি পরীক্ষা করি যতক্ষণ না আমরা কাজ করে এমন একটি খুঁজে পাই।

ব্যাখ্যা:

f-1m.^T/tQdQPtQ
f                  Return the first value T such that the following is truthy:
            PtQ    Take the prime factorization of the input - 1.
   m               Map those prime factors to
       /tQd        Take the input - 1 divided by the factor
    .^T    Q       Raise T to that exponent mod input,
                   performed as modular exponentiation, for performance.
 -1                Check that 1 is not found among the results.

অপূর্ব সুন্দর!

আপনার কোডটি কী কার্যকারিতা সম্পাদন করে?

@ ল্যাম্বিক এটি করেন ( PtQঅংশটি)।
এরিক আউটগল্ফার


-3
%MATLAB CODE
%Program to generate Z_n for an integer n
n = input('Enter a number to find modulo')
q = input ('Enter a prime number greater than the number you wished to find modulo')
if n>=q 
   fprintf('Error')
   exit(1)
end
for R=1:q-1
    fprintf(rem(n.^R, q))
    fprintf('\n')
end

1
এটি সঠিক সমস্যার সমাধান করছে না। আপনার কোডটি উদাহরণস্বরূপ, একটি ইনপুট নেওয়া উচিত এবং একটি আউটপুট দেওয়া উচিত।

1
এছাড়াও, এই কোডটি মোটেই গল্ফ হয় না। গল্ফযুক্ত কোডটি যতটা সম্ভব সংক্ষিপ্ত হওয়া দরকার, যাতে আপনি ইনপুট পাঠ্য এবং সমান চিহ্ন এবং এ জাতীয় চারপাশের স্থানগুলি সরাতে পারেন।
কমরেড স্পার্কলপনি

3
@ কমরেড স্পার্কলপনি আমার মনে হয় যে প্রথম সমস্যাটি যে সঠিক সমস্যার সমাধান করছে না তা প্রথমে মোকাবেলা করা উচিত :)
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.