সংখ্যাটি বহুবর্ষের সময় নিখুঁত শক্তি কিনা তা পরীক্ষা করে দেখুন


23

একেএস প্রিমালিটি টেস্টিং অ্যালগরিদমের প্রথম পদক্ষেপটি ইনপুট নম্বরটি নিখুঁত শক্তি কিনা তা পরীক্ষা করা। মনে হচ্ছে এটি সংখ্যা তত্ত্বের একটি সুপরিচিত সত্য যেহেতু কাগজটি বিশদভাবে এটি ব্যাখ্যা করেনি। কেউ কি আমাকে বলতে পারেন যে বহুপক্ষীয় সময়ে এটি কীভাবে করা যায়? ধন্যবাদ।


7
একেএস অ্যালগরিদমের প্রথম পদক্ষেপটি ইনপুট নম্বরটি একটি নিখুঁত শক্তি ( কিছু পূর্ণসংখ্যার সি, এন> 1 এর ফর্ম একটি সংখ্যা ) কিনা তা পরীক্ষা করা হয়, যা সংখ্যাটি প্রধান শক্তি কিনা তা পরীক্ষার চেয়ে পৃথক। নিখুঁত শক্তির জন্য পরীক্ষাটি কাগজে উদ্ধৃত বইটির 9.44 অনুশীলন ( আধুনিক কম্পিউটার বীজগণিত বাই ভন জুর গাথেন এবং গারহার্ড, 2003)) আমি বইটি পড়িনি এবং উত্তরটিও জানি না, তবে আপনি কি বইটি নিয়ে পরামর্শ করেছেন? cএন
Tsuyoshi Ito

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

@ শুয়ুশি আমার ভুলটি নির্দেশ করার জন্য ধন্যবাদ। আমি বইয়ের সাথে পরামর্শ করি নি।
yzll

2
আপনি যদি প্রশ্নটির বিষয়ে চিন্তা করেন তবে দয়া করে সমস্যাটি পোস্ট করার আগে সমাধান করার চেষ্টা করুন।
Tsuyoshi Ito

সোসোশি / অর্ণব, সম্ভবত আপনি উত্তর হিসাবে পুনরায় পোস্ট করা উচিত যাতে এটি গ্রহণ করা যায়?
সুরেশ ভেঙ্কট

উত্তর:


31

একটি নম্বর এন দেওয়া হয়েছে, যদি তা সবসময় (b> 1) হিসাবে লেখা যায় তবে b < লগ ( এন ) + 1 । এবং প্রতি সংশোধন করা হয়েছে জন্য , চেক যদি সেখানে একটি বিদ্যমান একটি সঙ্গে একটি = বাইনারি অনুসন্ধান ব্যবহার করা যাবে। মোট চলমান সময় হ'ল হে ( লগ 2 এন ) আমার ধারণা।abb<log(n)+1bএকটিab=nO(log2n)


5
রামপ্রসাদের উত্তরে এক্সফেনশনেশন করার সময় বেরিয়ে যায় যা হ'ল । আরেকটি উপায় চয়ন করা হয় তারপর গনা তম রুট এন যার একটি মোট সময় হবে হে ( 3 এন )O(log3n)bbnO(log3n)
ডেভিড মার্কুইস

1
একটি সাধারণ উন্নতি যা কেবল প্রাইম দ্বারা বেছে নেওয়া একটি ফ্যাক্টরকে সরিয়ে দেয় । loglognb
চাও শো

16

নিখুঁত শক্তি পরীক্ষার জন্য বাচ এবং সোরেনসন, সিভ অ্যালগরিদমগুলি দেখুন, অ্যালগোরিদমিকা 9 (1993), 313-328, ডিওআই: 10.1007 / বিএফ01228507, এবং ডিজে বার্নস্টেইন, প্রয়োজনীয় রৈখিক সময়, গণিতের মধ্যে নিখুঁত ক্ষমতা সনাক্তকরণ। বন্দীরা। 67 (1998), 1253-1283।


উন্নত অ্যাসিম্পটোটিক চলমান সময় এবং সহজ চিকিত্সা সহ একটি ফলো-আপ পেপারও রয়েছে: ডিজে বার্নস্টেইন, এইচডাব্লু লেনস্ট্র্রা জুনিয়র এবং জে পিলা, কপিরাইটস, ম্যাথ এ ফ্যাক্টরিং করে নিখুঁত ক্ষমতা সনাক্তকরণ। বন্দীরা। 76 (2007), 385–388।
এরিক ওয়াং

3

আমি কাগজে একটি আকর্ষণীয় এবং মার্জিত সমাধান পেয়েছি: আর.ক্রান্ডল এবং জে.পাপাডোপ্লোস দ্বারা, একেএস ক্লাসের প্রিমালটিটি পরীক্ষার প্রয়োগের সময়, 18 মার্চ 2003।


2

একরকম, আমি দেখাতে পারি যে বাইনারি অনুসন্ধানের অ্যালগরিদম হল O(lg n(lg lg n)2)

প্রথমত, , < এল জি এন আছেবাইনারি অনুসন্ধান অ্যালগোরিদম: প্রতিটি জন্য , আমরা বাইনারি অনুসন্ধান ব্যবহার এটি একটিab=nb<lg n
ba

ablg b=lg lg na

Aalg A

b lg a=lg n, that is

lg A=lg nb
When summing up,
lg A=lg n(11+12+...+1B)=lg nlg B=lg nlg lg n

In other words, all the operations for binary search is O(lg nlg lg n)

Consider the operation of ab, it is O(lg n(lg lg n)2) finally.

ps: All the lg are base 2.

Python code:

#--- a^n ---------------------------------------
def fast_exponentation(a, n):
    ans = 1
    while n:
        if n & 1 : ans = ans * a
        a = a * a
        n >>= 1
    return ans
#------------------------------------------
# Determines whether n is a power a ^ b, O(lg n (lg lg n) ^ 2)
def is_power(n):
    if (- n & n) == n: return True  # 2 ^ k
    lgn = 1 + ( len( bin ( abs ( n ) ) ) - 2)
    for b in range(2,lgn):
        # b lg a = lg n
        lowa = 1L
        higha = 1L << (lgn / b + 1)
        while lowa < higha - 1:
            mida = (lowa + higha) >> 1
            ab = fast_exponentation(mida,b) 
            if ab > n:   higha = mida
            elif ab < n: lowa  = mida
            else:   return True # mida ^ b
    return False
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.