ফার্মেট প্রাইমস তৈরি করা হচ্ছে


10

একটি নম্বর এন দেওয়া হয়েছে, নবম প্রাইম ফারম্যাট নম্বর মুদ্রণ করুন , যেখানে ফার্ম্যাট নম্বরগুলি 2 2 কে +1 ফর্মের । এই কোডটি তাত্ত্বিকভাবে কোনও এন এর জন্য কাজ করা উচিত (উদাহরণস্বরূপ এটি হার্ডকোড করবেন না) যদিও এটি এন> ৪ এর জন্য সমাপ্ত হবে বলে আশা করা হচ্ছে না (যদিও এটি এন = 5 এর জন্য 4294967297 ফেরত দেওয়া উচিত নয় , কারণ 4294967297 কোনও প্রাথমিক সংখ্যা নয়।)

মনে রাখবেন যে সমস্ত ফার্মাট প্রাইমগুলি 2 2 n +1 ফর্মের হলেও 2 2 এন +1 ফর্মের সমস্ত সংখ্যা মুখ্য নয়। এই চ্যালেঞ্জের লক্ষ্য হ'ল এন-থাই প্রাইমকে ফিরিয়ে দেওয়া

পরীক্ষার মামলা

0 -> 3
1 -> 5
2 -> 17
3 -> 257
4 -> 65537

বিধি

  • স্ট্যান্ডার্ড লুফোলগুলি অনুমোদিত নয়।
  • 0-সূচক এবং 1-সূচি উভয়ই গ্রহণযোগ্য।
  • এটি , সর্বনিম্ন বাইট-কাউন্ট জেতা।

সম্পর্কিত: কনস্ট্রাকটেবল এন-গনস


1
আমি বা কিছু উত্তর চ্যালেঞ্জটির ভুল ব্যাখ্যা করছে? কেবলমাত্র আমরা একটি প্রোগ্রাম লেখা হয় না আউটপুট 2^(2^n) + 1, যেখানে nইনপুট হয়? আপনার পরীক্ষার কেসগুলির সাথে এটি সীমাবদ্ধ রয়েছে (যা আমরা জানি যে ইতিমধ্যে প্রধান, তাই চেক করার দরকার নেই)। এবং আপনি প্রোগ্রামটি এমনভাবে কাজ করার আশা করবেন না যেখানে এন> 4 (এবং এন = 5 প্রথম অ-প্রধানমন্ত্রী)।
jstnthms

প্রোগ্রামটি তাত্ত্বিকভাবে এন> 4 এর জন্য কাজ করা উচিত, যদিও এটি কখনও অনুশীলনে কার্যকর হবে না, কারণ আমরা কেবল 5 ফার্মাট প্রাইম সম্পর্কে জানি।
poi830

সমস্ত ফার্মাট প্রাইমদের জন্য তাত্ত্বিকভাবে কাজ করার উদ্দেশ্যটি আমি সত্যিই বুঝতে পারি না, যেহেতু এখানে কেবল 5 টি পদ রয়েছে।
মিঃ এক্সকোডার

2
@ কোডি গ্রে টেস্টকেসগুলি বিভ্রান্তিমূলক, কারণ এটি এর জন্য কাজ করে n=1:4। সমস্ত ফারমেট প্রাইমগুলি ফর্মের হয় 2^2^n+1তবে এর অর্থ এই নয় যে ফর্মের সমস্ত সংখ্যা 2^2^n+1প্রকৃতপক্ষে are এই হল কেনার ক্ষেত্রে n=1:4কিন্তু না n=5উদাহরণস্বরূপ।
জেএডি

3
আমি মনে করি যে বিভ্রান্তির কিছু অংশ হ'ল আপনি বলছেন যে ইনপুটটি nএবং আউটপুটটি অবশ্যই ফর্মের হওয়া উচিত 2^(2^n)+1। আপনি যদি ইনপুট এবং এক্সপোনেন্টের জন্য বিভিন্ন ভেরিয়েবল ব্যবহার করেন তবে কিছু বিভ্রান্তি হ্রাস হতে পারে। এটি যদি আপনার স্পষ্টভাবে উল্লেখ করে যে "n = 5 এ যুক্তিসঙ্গত সময়ে আউটপুট দেওয়ার দরকার নেই তবে এটি
4294967297

উত্তর:



3

জেলি , 13 11 বাইট

ÆẸ⁺‘©ÆPµ#ṛ®

1-ভিত্তিক সূচক ব্যবহার করে।

এটি অনলাইন চেষ্টা করুন!

কিভাবে এটা কাজ করে

ÆẸ⁺‘©ÆPµ#ṛ®  Main link. No argument.

        #    Read an integer n from STDIN and call the chain to the left with
             arguments k = 0, 1, 2, ... until n matches were found.
ÆẸ           Find the integer with prime exponents [k], i.e., 2**k.
  ⁺          Repeat the previous link, yielding 2**2**k.
   ‘         Increment, yielding 2**2**k+1 and...
    ©        copy the result to the register.
     ÆP      Test the result for primality.
          ®  Yield the value from the register, i.e., the n-th Fermar prime.
         ṛ   Yield the result to the right.

ওহ, সুতরাং কেউ ফলাফল সাফ করার জন্য ব্যবহার করে ... টিআইএল
লীকি নুন

ওহ, সুতরাং একটি একক পূর্ণসংখ্যার ÆẸপরিবর্তে একটি ব্যবহার করে 2*... টিআইএল
এরিক দ্য আউটগল্ফার

2

পার্ল 6 ,  45  42 বাইট

{({1+[**] 2,2,$++}...*).grep(*.is-prime)[$_]}

চেষ্টা করে দেখুন

{({1+2**2**$++}...*).grep(*.is-prime)[$_]}

চেষ্টা করে দেখুন

সম্প্রসারিত:

{  # bare block lambda with implicit parameter 「$_」

  (  # generate a sequence of the Fermat numbers

    {
      1 +
      2 ** 2 **
        $++            # value which increments each time this block is called
    }
    ...                # keep generating until:
    *                  # never stop

  ).grep(*.is-prime)\  # reject all of the non-primes
  [$_]                 # index into that sequence
}



0

পাইথ , 14 বাইট

Lh^2^2byfP_yTQ

অনলাইন চেষ্টা করুন।

মূল ধারণাটি অন্য প্রশ্নের মধ্যে এক্সনরের উত্তর থেকে "ধার করা"

Lh^2^2byfP_yTQ

L                    define a function with name y and variable b, which:
 h^2^2b                returns 1+2^2^b
       y             call the recently defined function with argument:
        f    Q         the first number T >= Q (the input) for which:
         P_yT            the same function with argument T returns a prime
                     and implicitly print

0

05 এ বি 1 ই , 8 বাইট

কোড:

ফলাফলগুলি 1-ইনডেক্সড।

µN<oo>Dp

05AB1E এনকোডিং ব্যবহার করে । এটি অনলাইন চেষ্টা করুন!

ব্যাখ্যা:

µ              # Run the following n succesful times..
 N             #   Push Nn
  oo           #   Compute 2 ** (2 ** n)
    >          #   Increment by one
     D         #   Duplicate
      p        #   Check if the number is prime
               # Implicit, output the duplicated number which is on the top of the stack

0

জাভাস্ক্রিপ্ট, 12 46 বাইট

k=>eval('for(i=n=2**2**k+1;n%--i;);1==i&&n')

বেশিরভাগ কোডটি এখানে থেকে প্রাইম চেক দ্বারা নেওয়া হয় ।


মনে রাখবেন যে n তম ফিরে আসবে মৌলিক ফের্মাট সংখ্যা, শুধু n তম ফার্মার সংখ্যা।
poi830

@ poi830 এখন প্রধান চেকটি বেশিরভাগ কার্যকারিতা গ্রহণ করে :(
সুপারস্টোরমার

আমি মনে করি আপনি i == 1 = 1 এর পরিবর্তে বলতে পারবেন শূন্য এখানেও ভাল? এটি হ্রাস করতে হবে 2 বাইট
ড্যানিয়েলইন্ডি

0

ডায়ালগ এপিএল (২৯ টি অক্ষর)

আমি প্রায় নিশ্চিত এটি উন্নতি করা যেতে পারে।

{2=+/0=(⍳|⊢)a←1+2*2*⍵:a⋄∇⍵+1}

এটি একটি পুনরাবৃত্ত ফাংশন যা 1 + 2 ^ 2 ^ ⍵ এর বিভাজকের সংখ্যা পরীক্ষা করে, যেখানে ⍵ ফাংশনের সঠিক যুক্তি। যদি বিভাজকের সংখ্যা 2 হয় তবে সংখ্যাটি প্রধান, এবং এটি এটিকে ফেরত দেয়, অন্যথায় এটি ফাংশনটিকে আবার ⍵ + 1 দিয়ে ডান যুক্তি হিসাবে কল করে।

উদাহরণ

{2=+/0=(⍳|⊢)a←1+2*2*⍵:a ⋄ ∇ ⍵+1}¨⍳4
      5 17 257 65537

এখানে আমি প্রতিটি ⍳4 (1-4 নম্বরগুলি) এ ফাংশনটি কল করি। এটি ঘুরে প্রতিটি সংখ্যায় এটি প্রয়োগ করে।


0

হাস্কেল , 61 বাইট

p n=2^2^n;f=(!!)[p x+1|x<-[0..],all((>)2.gcd(p x+1))[2..p x]]

এটি অনলাইন চেষ্টা করুন!

0 ভিত্তিক সূচক

ব্যাখ্যা

p n=2^2^n;                                          -- helper function 
                                                    -- that computes what it says
f=                                                  -- main function
  (!!)                                              -- partially evaluate 
                                                    -- index access operator
      [p x+1|                                       -- output x-th fermat number
             x<-[0..],                              -- try all fermat number indices
                      all                 [2..p x]  -- consider all numbers smaller F_x
                                                    -- if for all of them...
                         ((>)2                      -- 2 is larger than...
                              .gcd(p x+1))          -- the gcd of F_x 
                                                    -- and the lambda input 
                                                    -- then it is a Fermat prime!   
                                                  ]
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.