অসীম বহু প্রাইম


26

ইউক্লিডের পর থেকে আমরা জানি যে অসীম অনেকগুলি প্রাইম রয়েছে। যুক্তিটি দ্বন্দ্বের দ্বারা হয়: যদি কেবলমাত্র চূড়ান্তভাবে অনেকগুলি থাকে তবে আসুন বলতে পারি তবে অবশ্যই দ্বারা বিভাজ্য নয় এই প্রাইমগুলি, সুতরাং এর প্রধান ফ্যাক্টরীকরণটি অবশ্যই একটি নতুন প্রাইম ফলন করবে যা তালিকায় ছিল না। সুতরাং এই ধারণাটি যে কেবল চূড়ান্তভাবে প্রাইম রয়েছে তা মিথ্যা।p1,p2,...,pnm:=p1p2...pn+1

এখন ধরা যাক 2 কেবলমাত্র প্রাইম। উপরের পদ্ধতিটি নতুন (সম্ভাব্য) প্রধান হিসাবে 2+1=3 উপার্জন করে। পদ্ধতিটি প্রয়োগ করে আবার 23+1=7 এবং তারপরে 237+1=43 , তারপরে 23743+1=13139 , সুতরাং উভয় 13 এবং 139 টি নতুন প্রাইমস ইত্যাদি। এমন ক্ষেত্রে যেখানে আমরা একটি সম্মিলিত নম্বর পাই, আমরা কেবলমাত্র সর্বনিম্ন নতুন প্রাইমটি গ্রহণ করি। এটি A000945 এ ফলাফল ।

চ্যালেঞ্জ

প্রদত্ত একটি মৌলিক p1 এবং একটি পূর্ণসংখ্যা n নীচের হিসাবে সংজ্ঞায়িত অনুক্রমের n তম শব্দ pn গণনা করুন :

pn:=min(primefactors(p1p2...pn1+1))

এই অনুক্রমগুলি ইউক্লিড-মুলিন- সিকোয়েন্সস নামে পরিচিত ।

উদাহরণ

জন্য p1=2 :

1 2
2 3
3 7
4 43
5 13
6 53
7 5
8 6221671
9 38709183810571

জন্য p1=5 ( A051308 ):

1 5
2 2
3 11
4 3
5 331
6 19
7 199
8 53
9 21888927391

জন্য p1=97 ( A051330 )

1 97
2 2
3 3
4 11
5 19
6 7
7 461
8 719
9 5

উত্তর:


10

জাভাস্ক্রিপ্ট (ES6),  45  44 বাইট

ইনপুট হিসাবে নেয় (n)(p1), যেখানে 0-সূচিযুক্ত।n

n=>g=(p,d=2)=>n?~p%d?g(p,d+1):--n?g(p*d):d:p

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

মন্তব্য

n =>                // n = 0-based index of the requested term
  g = (             // g is a recursive function taking:
    p,              //   p = current prime product
    d = 2           //   d = current divisor
  ) =>              //
    n ?             // if n is not equal to 0:
      ~p % d ?      //   if d is not a divisor of ~p (i.e. not a divisor of p + 1):
        g(p, d + 1) //     increment d until it is
      :             //   else:
        --n ?       //     decrement n; if it's still not equal to 0:
          g(p * d)  //       do a recursive call with the updated prime product
        :           //     else:
          d         //       stop recursion and return d
    :               // else:
      p             //   don't do any recursion and return p right away

9

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

এটি উত্পাদন করে এবং অসীম আউটপুট স্ট্রিম।

λλP>fW

এটি অনলাইন চেষ্টা করুন! (লিঙ্কটিতে কিছুটা সংশোধিত সংস্করণ রয়েছে λ£λP>fW, যা পরিবর্তে প্রথম পদগুলিকে আউটপুট করে )n

ব্যাখ্যা

খুব সোজা। প্রদত্ত এবং , প্রোগ্রাম নিম্নলিখিত আছে:p1n

  • অসীম স্ট্রিমের জন্য প্রাথমিক প্যারামিটার হিসাবে দিয়ে শুরু হয় (যা প্রথমটি ব্যবহার করে উত্পন্ন হয় ) এবং একটি পুনরাবৃত্ত পরিবেশ শুরু হয় যা প্রতিটি ইন্টিগ্রেশন পরে একটি নতুন শব্দ উত্পন্ন করে এবং এটিকে প্রবাহে সংযোজন করে।p1λ
  • দ্বিতীয় λ, এখন পুনরাবৃত্তির পরিবেশের অভ্যন্তরে ব্যবহৃত হচ্ছে , এর কার্যকারিতা পরিবর্তন করে: এখন, এটি পূর্ববর্তী সমস্ত উত্পাদিত উপাদানগুলি পুনরুদ্ধার করে (যেমন তালিকা ), যেখানে বর্তমান পুনরাবৃত্তি সংখ্যাটি উপস্থাপন করে।[λ0,λ1,λ2,,λn1]n
  • তুচ্ছ: Pপণ্যটি নেয় ( ), এই পণ্যটিতে একটি যুক্ত করে এবং সর্বনিম্ন মূল উপাদানটি পুনরুদ্ধার করে।λ0λ1λ2λn1>fW

6

জে , 15 বাইট

-10 বাইট মাইল ধন্যবাদ!

ক্রমটি এন পর্যন্ত শূন্য করা (শূন্য-সূচক) - @ মাইলসকে ধন্যবাদ

(,0({q:)1+*/)^:

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

জে , 25 বাইট

ফেরত পাঠায় nতম আইটেমটি

_2{((],0{[:q:1+*/@])^:[])

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


1
(,0({q:)1+*/)^:15 বাইটের জন্য, সিকোয়েন্সটি n(শূন্য সূচকযুক্ত)
মাইল

@ মাইলস আপনাকে ধন্যবাদ!
গ্যালেন ইভানভ

খুব সুন্দর. @ মাইলস সেখানে ব্যাকরণিকভাবে ঠিক কী ঘটছে? আমরা এক ক্রিয়া এবং সংমিশ্রণ একসাথে রাখি এবং একটি ডায়াডিক ক্রিয়া ফিরে পাই। আমি ভেবেছিলাম verb conj একটি বিশেষণ উত্পন্ন
জোনাহ

1
@ জোনাহ এটি একটি কৌশল যা আমি গল্ফিং থেকে শিখেছি। আমি মনে করি এটি পুরানো বিধি বিধানগুলির মধ্যে একটি যা এখনও বৈধ
মাইল

@ মাইলস আমি ঠিক বুঝতে পেরেছি এটি একটি বিশেষণ (বা অ্যাডনারন)। এটি বিশেষ্যটিকে তার বামে পরিবর্তিত করে, যা ডানদিকের ডানদিকে "সংযুক্ত করে" ^:, এবং তারপরে এটি একটি ক্রিয়াপদে পরিণত হয় যা ডান আর্গের জন্য প্রযোজ্য। আমি মনে করি ব্যাকরণগতভাবে যা ঘটছে।
যোনা

5

পাইথন 2 , 56 বাইট

i=input();k=1
while 1:
 k*=i;print i;i=2
 while~k%i:i+=1

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


মন্তব্য

i=input() # the initial prime
k=1       # the product of all previous primes
while 1:  # infinite loop
 k*=i     # update the product of primes
 print i  # output the last prime
 i=2      # starting at two ...
 while~k%i: # find the lowest number that divides k+1
  i+=1
            # this our new prime

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


আমি শুধু পাইথন দিয়ে শুরু, কিন্তু আপনি প্রয়োজন int(input())অন্যথায় iএকটি হল str?
অ্যান্টনি

2
পাইথন 3 এ এটি input()সর্বদা সত্য হিসাবে স্ট্রিং দেয় be পাইথন 2 input()ইনপুটটি মূল্যায়ন করার চেষ্টা করে। আমি পাইথন 2 এই ক্ষেত্রে ব্যবহার করছি কারণ ফলাফল কোডটি সামান্য ছোট। জন্য বাস্তব আপনি যে কোডটি পাইথন 3 ব্যবহার করতে যেমন পাইথন এর নতুন এবং আরো সমর্থিত সংস্করণ চেষ্টা করা উচিত।
ovs

এন পদক্ষেপের পরে এটি কীভাবে শেষ হবে?
সিন্ট্যাক্স

@ সিনট্যাক্স এটি ডিফল্ট সিকোয়েন্স বিধি দ্বারা অনুমোদিত হিসাবে অনির্দিষ্টকালের জন্য প্রদত্ত পি 1 এর ক্রমকে আউটপুট করে দেয় ।
ovs

4

জেলি , 8 বাইট

P‘ÆfṂṭµ¡

একটি পূর্ণ প্রোগ্রাম (শূন্য ইন্ডেক্স ব্যবহার করে) গ্রহণ এবং যার তালিকার একটি জেলি উপস্থাপনা ছাপে করার সমেত। (ডায়াডিক লিঙ্ক হিসাবে , আমাদের কোনও তালিকা নয়, একটি পূর্ণসংখ্যার ফিরিয়ে দেওয়া হবে))P0nP0Pnn=0

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

কিভাবে?

P‘ÆfṂṭµ¡ - Link: integer, p0; integer n
      µ¡ - repeat the monadic chain to the left n times, starting with x=p0:
P        -   product of x (p0->p0 or [p0,...,pm]->pm*...*p0)
 ‘       -   increment
  Æf     -   prime factors
    Ṃ    -   minimum
     ṭ   -   tack
         - implicit print

3

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

GDˆ¯P>fß

প্রথম ইনপুট হল , দ্বিতীয়টি প্রাইম ।np

এটি অনলাইনে চেষ্টা করুন বা আরও কয়েকটি পরীক্ষার ক্ষেত্রে (পরীক্ষার স্যুটটিতে জন্য পরীক্ষার কেস নেই , কারণ এবং এর জন্য খুব বেশি সময় নেয়)।n9p=2p=5f

ব্যাখ্যা:

G         # Loop (implicit input) n-1 amount of times:
 Dˆ       #  Add a copy of the number at the top of the stack to the global array
          #  (which will take the second input p implicitly the first iteration)
   ¯      #  Push the entire global array
    P     #  Take the product of this list
     >    #  Increase it by 1
      f   #  Get the prime factors of this number (without counting duplicates)
       ß  #  Pop and only leave the smallest prime factor
          # (after the loop: implicitly output the top of the stack as result)

λλP>fWঅসীম তালিকা হিসাবে আউটপুট সহ আমার কাছে (6 বাইট) ছিল এবং λ£λP>fWপ্রথম পদগুলির জন্য (7 বাইট) । তবে পাওয়া 9 বাইট হওয়া উচিত ... কেবলমাত্র আমাদের মতো পতাকা থাকলেও শেষ উপাদানটির জন্য! n তমnnth£
মিঃ এক্সকোডার

@ মিঃ এক্সকোডার " যদি কেবল আমাদের কাছে একটি £উপাদান থাকে তবে শেষ উপাদানটির জন্য! " ? ;) সম্পাদনা: প্রকৃতপক্ষে, এটি £তালিকার মতো ঠিক কাজ করে না .. সর্বশেষ 1 এবং 2 আইটেমের সাথে দুটি আলগা আইটেমের ফলাফলের [1,2]সাথে তালিকার মতো একটি তালিকা ব্যবহার করে (অর্থাৎ পরিবর্তে বা এর সাথে 12345হয়ে যায় ) ..[5,45][45,3][3,45]12S.£
কেভিন ক্রুইজসেন

উম্ম, না, কীভাবে λ.£কাজ করা উচিত তা আমি দেখছি না । এর সাথে যুক্ত অতিরিক্ত কার্য হিসাবে আমি পতাকা ব্যবহার করেছি λ( আদনানের সাথে এই কথোপকথনটি দেখুন )। আমি মূলত এমন কিছু পতাকা চাই èযা λè...}এটি চালানোর সময় অনন্ত স্ট্রিমের পরিবর্তে এন-থ এলিমেন্ট তৈরি করে (যেমন λ£প্রথম এন উপাদানগুলি তৈরি করার জন্য কাজ করবে)।
মিঃ এক্সকোডার

@ মিঃ এক্সকোডার আহা দুঃখিত, আপনি £পুনরাবৃত্ত পরিবেশের জন্য এটি ব্যবহার করেছেন । হ্যাঁ, তাহলে λ.£আসলে কাজ হবে না, আমার খারাপ। নির্বিশেষে সুন্দর 6-বাইটার। এখন আপনাকে কেবল @ ফ্লাওয়ারের প্রতিক্রিয়াটির জন্য অপেক্ষা করতে হবে এটি অনুমোদিত কি না (সম্ভবত এটি হ'ল)।
কেভিন ক্রুইজসেন

3

জাপট , 12 11 বাইট

এটি পেতে সঠিকভাবে সংগ্রাম করা তাই গল্ফ করা যেতে পারে এমন কোনও কিছু মিস হতে পারে।

লাগে nপ্রথম ইনপুট হিসাবে এবং p1দ্বিতীয়, একটি Singleton অ্যারে হিসাবে। প্রথম nপদগুলি প্রদান করে। পরিবর্তন hকরার জন্য gফিরে যাওয়ার nপরিবর্তে তম 0-সূচীবদ্ধ পরিভাষা।

@Z×Ä k Î}hV

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

@Z×Ä k Î}hV     :Implicit input of integer U=n & array V=[p1]
@               :Function taking an array as an argument via parameter Z
 Z×             :  Reduce Z by multiplication
   Ä            :  Add 1
     k          :  Prime factors
       Î        :  First element
        }       :End function
         hV     :Run that function, passing V as Z, and
                : push the result to V.
                : Repeat until V is of length U

3

রেটিনা , 56 বাইট

,|$
$*
"$&"{~`.+¶
$$¶_
)`\b(__+?)\1*$
$.1$*
1A`
.$

\*
,

এটি অনলাইন চেষ্টা করুন! প্রথম লাইনে যোগ করতে নতুন পদগুলির সংখ্যা এবং দ্বিতীয় লাইনে বীজ পদ (গুলি) হিসাবে ইনপুট নেয়। দ্রষ্টব্য: এটি অবিচ্ছিন্ন ফ্যাক্টরিয়েশন ব্যবহার করায় খুব ধীর হয়ে যায় তাই প্রাসঙ্গিক দৈর্ঘ্যের একটি স্ট্রিং তৈরি করা দরকার। ব্যাখ্যা:

,|$
$*

বীজের সাথে কমাগুলি প্রতিস্থাপন করুন *এবং এর সাথে যুক্ত করুন *। এটি মানগুলির পণ্যের দৈর্ঘ্যের একটি স্ট্রিংয়ের জন্য একটি রেটিনা এক্সপ্রেশন তৈরি করে।

"$&"{
)`

প্রথম ইনপুট দ্বারা প্রদত্ত লুপটির পুনরাবৃত্তি করুন।

~`.+¶
$$¶_

অস্থায়ীভাবে প্রথম লাইনে নম্বরটি একটি এর সাথে প্রতিস্থাপন করুন $এবং _দ্বিতীয় লাইনে একটি প্রিপেন্ড করুন , তারপরে ফলাফলটিকে রেটিনা প্রোগ্রাম হিসাবে মূল্যায়ন করুন, এইভাবে _মানগুলির উত্পাদনের তুলনায় 1 দৈর্ঘ্যের একটি স্ট্রিং যুক্ত করুন ।

\b(__+?)\1*$
$.1$*

দশমিকের মধ্যে সংখ্যার ক্ষুদ্রতম অনানুক্রমিক গুণকটি সন্ধান করুন এবং *পরবর্তী লুপের জন্য প্রস্তুত সংযোজন করুন ।

1A`

পুনরাবৃত্তি ইনপুট মুছুন।

.$

শেষটি মুছুন *

\*
,

S *এর সাথে বাকী গুলি প্রতিস্থাপন করুন ,


2

জাভাস্ক্রিপ্ট (নোড.জেএস) , 54 বাইট

f=(p,n,P=p,F=n=>-~P%n?F(n+1):n)=>--n?f(p=F(2),n,P*p):p

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

Ungolfed

F=(p,n=2)=>            // Helper function F for finding the smallest prime factor
  p%n                  //   If n (starting at 2) doesn't divide p:
    ?F(n+1)            //     Test n+1 instead
    :n                 //   Otherwise, return n
f=(p,n,P=p)=>          // Main function f:
  --n                  //   Repeat n - 1 times:
    ?f(p=F(P+1),n,P*p) //     Find the next prime factor and update the product
    :p                 //   Return the last prime


2

রুবি 2.6, 51 বাইট

f=->s,n{[s,l=(2..).find{|d|~s%d<1}][n]||f[l*s,n-1]}

(2..), 2 থেকে শুরু হওয়া অসীম পরিসীমা টিআইও তে এখনও সমর্থিত নয়।

এটি একটি পুনরাবৃত্ত ফাংশন যা একটি প্রারম্ভিক মান গ্রহণ করে s(মূল বা সংমিশ্রিত হতে পারে), এন = 0 (সম্পাদনা করুন: নোটটির অর্থ এটি শূন্য-সূচকযুক্ত) হলে ফিরে আসে, সর্বনিম্ন সংখ্যাটি l1 এর চেয়ে বড় হয় এবং -(s+1)এন যখন বিভক্ত হয় = 1, এবং অন্যথায় s=l*sএবং এর সাথে পুনরাবৃত্তি করে n=n-1


1
আপনার সম্ভবত উল্লেখ করা উচিত যে আপনি শূন্য-সূচকযুক্ত করছেন; এটি টিআইওতে কাজ করার অনুমতি দেওয়ার জন্য (কেবলমাত্র 1 বাইট বেশি দীর্ঘ) (2..)দিয়ে প্রতিস্থাপন করেছি 2.stepএবং সমস্ত কিছু এক সাথে বন্ধ ছিল। এটি অনলাইন চেষ্টা করুন!
মান কালি

2

এপিএল (ডায়ালগ প্রসারিত) , 15 বাইট

এটি অ্যালগরিদমের মোটামুটি সহজ বাস্তবায়ন যা বর্ধিতর জন্য খুব সহায়ক প্রাথমিক উপাদানগুলি ব্যবহার করে এটি অনলাইন চেষ্টা করুন!

{⍵,⊃⍭1+×/⍵}⍣⎕⊢⎕

ব্যাখ্যা

{⍵,⊃⍭1+×/⍵}⍣⎕⊢⎕

             ⊢⎕  First get the first prime of the sequence S from input.
{         }⍣⎕    Then we repeat the code another input number of times.
     1+×/⍵       We take the product of S and add 1.
                Get the prime factors of product(S)+1.
                Get the first element, the smallest prime factor of prod(S)+1.
 ⍵,              And append it to S.




1

পার্ল 6 , 33 32 বাইট

-1 বাইট ধন্যবাদ নওহেলহোফকে

{$_,{1+(2...-+^[*](@_)%%*)}...*}

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

নামবিহীন কোড ব্লক যা একটি সংখ্যা নেয় এবং একটি অলস তালিকাকে দেয়।

ব্যাখ্যা:

{                              }  # Anonymous codeblock
                           ...*   # That returns an infinite list
 $_,                              # Starting with the input
    {                     }       # Where each element is
     1+(2...             )          # The first number above 2
                      %%*           # That cleanly divides
               [*](@_)                # The product of all numbers so far
            -+^                       # Plus one

1
-+^[*](@_)একটি বাইট সংরক্ষণ করে।
nwellnhof

0

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

g 1
g a b=b:g(a*b)([c|c<-[2..],1>mod(a*b+1)c]!!0)

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

অলস তালিকা হিসাবে অসীম অনুক্রমটি প্রদান করে।

ব্যাখ্যা:

g 1                                            -- Initialise the product as 1
g a b=                                         -- Given the product and the current number
       b:                                      -- Return the current number, followed by
         g                                     -- Recursively calliong the function with
          (a*b)                                -- The new product
               (                             ) -- And get the next number as
                [c|c<-[2..],             ]!!0  -- The first number above 2
                            1>mod       c      -- That cleanly divides
                                 (a*b+1)       -- The product plus one
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.