আমি কি 'রেডিভোসাইট' নাম্বার?


26

Redivosite এই চ্যালেঞ্জের একমাত্র উদ্দেশ্যে উদ্ভাবিত একটি পোর্টম্যানট্যু শব্দ। এটি হ্রাস, বিভাগ এবং সংমিশ্রনের মিশ্রণ।

সংজ্ঞা

একটি পূর্ণসংখ্যা দেওয়া N> 6 :

  • যদি এন প্রাইম হয়, এন কোনও রেডোভাইসাইট নম্বর নয়।
  • যদি এন যৌগিক হয়:
    • এন ' প্রাইম না হওয়া পর্যন্ত বারবার N' = N / d + d + 1 গণনা করুন , যেখানে ডি 1 এর চেয়ে বড় এন এর ছোটতম বিভাজক
    • এন একটি Redivosite সংখ্যা যদি এবং কেবল যদি চূড়ান্ত মান এন ' একটি ভাজক থাকে এন

নীচে 100 টি প্রথম রেডিবোসাইট নম্বর (পোস্টের সময় কোনও ওইআইএস এন্ট্রি নেই):

14,42,44,49,66,70,143,153,168,169,176,195,204,260,287,294,322,350,414,462,518,553,572,575,592,629,651,702,726,735,775,806,850,869,889,891,913,950,1014,1023,1027,1071,1118,1173,1177,1197,1221,1235,1254,1260,1302,1364,1403,1430,1441,1554,1598,1610,1615,1628,1650,1673,1683,1687,1690,1703,1710,1736,1771,1840,1957,1974,2046,2067,2139,2196,2231,2254,2257,2288,2310,2318,2353,2392,2409,2432,2480,2522,2544,2635,2640,2650,2652,2684,2717,2758,2760,2784,2822,2835

উদাহরণ

  • এন = 13 : 13 টি প্রাইম, সুতরাং 13 হ'ল রেডিভোসাইট নম্বর নয়
  • এন = 32 : 32/2 + 3 = 19; 19 কোনও বিভাজক বা 32 নয়, তাই 32 কোনও রেডিবোসাইট নম্বর নয়
  • এন = 260 : 260/2 + 3 = 133, 133/7 + 8 = 27, 27/3 + 4 = 13; 13 একটি বিভাজক বা 260, সুতরাং 260 হ'ল একটি রেডিবোসাইট নম্বর ite

তোমার কাজ

  • একটি পূর্ণসংখ্যা এন দেওয়া হয়েছে , যদি এটি একটি রেডিবোসাইট নম্বর বা অন্যথায় মিথ্যা মান হয় তবে সত্যবাদী মানটি ফিরিয়ে দিন। (আপনি যে কোনও দুটি স্বতন্ত্র মান আউটপুট করতে পারেন, যতক্ষণ না সেগুলি সুসংগত থাকে))
  • ইনপুটটি 6 এর চেয়ে বড় হওয়ার গ্যারান্টিযুক্ত ।
  • এটি , তাই বাইটের মধ্যে সংক্ষিপ্ত উত্তর!

13
আমি এই সমস্ত "সংখ্যা ক্রম" চ্যালেঞ্জগুলির সত্যই একটি নির্দিষ্ট সম্পত্তি সহ সংখ্যার সিক্যুয়েন্সগুলির পক্ষে কেবল সিদ্ধান্ত সমস্যা হিসাবে জিজ্ঞাসা করব wish এগুলি সরাসরি উত্পন্ন করার কোনও উপায় আছে বলে আমি অত্যন্ত সন্দেহ করি, সুতরাং একমাত্র সম্ভাব্য সমাধান হ'ল সিদ্ধান্তের সমস্যাটি সমাধান করা এবং তারপরে এটিকে একটি লুপে মোড়ানো যা Nth বা প্রথম এন বা এই সম্পত্তিটি সন্তুষ্টকারী সমস্ত পূর্ণসংখ্যার সন্ধান করে।
মার্টিন এেন্ডার

3
আমি ক্রম চ্যালেঞ্জগুলি পছন্দ করি যা সাধারণভাবে সিদ্ধান্ত-সমস্যা নয় , তবে এটির জন্য আমি মনে করি একটি সিদ্ধান্ত-সমস্যা আরও ভাল ফিট হবে। আমি কোন সম্পর্ক দেখতে মধ্যবর্তী পদ যেমন যে আপনি মুদ্রণ এন ম বা প্রথম এন একটি চালাক পদ্ধতিতে, তাই হয়তো গ্রহণ করার অনুমতি এন ইনপুট হিসাবে এবং যদি তা না হয় পরীক্ষণ redivosite ?
মিঃ এক্সকোডার

1
@ মার্টিনএেন্ডার এবং মিঃ এক্সকোডার আমার প্রাথমিক অভিপ্রায় ছিল (তাই মূল শিরোনাম যা আমি সবেমাত্র রোলব্যাক করেছি) এবং আমি আমার মনোভাব পরিবর্তন করেছি changed আমি অনুমান করি এটির কোনও ডাব্লুআইপি সমাধান (আপনার কারণগুলির জন্য) নষ্ট করা উচিত নয়, তাই আমি এটি সম্পাদনা করেছি।
আর্নল্ড

5
@ মিঃ এক্সকোডার হ্যাঁ, আমি এটাই বোঝাতে চাইছি। আমি ক্রম চ্যালেঞ্জগুলিকে কিছু মনে করি না যা আসলে অনুক্রম হিসাবে অনুভূত হয় (হয় কারণ আপনি a(n)সরাসরি গণনা করতে পারেন , বা আপনি পূর্ববর্তীগুলির থেকে কোনও শব্দ গণনা করতে পারেন)। চ্যালেঞ্জটি পরিবর্তনের জন্য ধন্যবাদ আর্নৌল্ড। :)
মার্টিন এন্ডার

উত্তর:


9

হাস্কেল, 91 85 83 80 75 74 বাইট

n#m=([n#(div m d+d+1)|d<-[2..m-1],mod m d<1]++[mod n m<1&&m<n])!!0
f x=x#x

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

f x=x#x                           -- call # with x for both parameters
n#m               
         |d<-[2..m-1],mod m d<1   -- for all divisors d of m
    [n#(div m d+d+1)           ]  -- make a list of recursive calls to #,
                                  -- but with m set to m/d+d+1
   ++ [mod n m<1&&m<n]            -- append the Redivosite-ness of n (m divides n,
                                  -- but is not equal to n)
                           !!0    -- pick the last element of the list
                                  -- -> if there's no d, i.e. m is prime, the
                                  --    Redivosite value is picked, else the
                                  --    result of the call to # with the smallest d

সম্পাদনা করুন: -২ বাইট @ বিএমওকে, -৩ বাইটকে @ এইচ.পি.উইজকে এবং -৫ -jan বাইট ধন্যবাদ @ Ørjan জোহানসেনকে




@ আরজান জোহানসেন: আবারও ধন্যবাদ।
নিমি

6

কাস্তে , 14 বাইট

?¬Ṡ¦ΩṗoΓ~+→Πpṗ

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

-3 H.PWiz ধন্যবাদ ।


ভিতরে একটি ক্লিনার ফাংশন সহ 14 বাইটΩ
এইচপিউইজ

@ এইচ.পি.ভিজ ঠিক বুঝতে পারে না Γ...
এরিক আউটগল্ফার

এখানে Γ, একটি তালিকা দেয়া [একটি, B, C ...] প্রযোজ্য হবে ~+→Πথেকে aএবং [b,c...]~+→Πযোগ a+1করার জন্য product[b,c...]aসবচেয়ে ছোট বিভাজক, product[b,c...]হলেনN/d
এইচ.পি.উইজ

@ এইচ.পি.উইজ এবং আমি প্রধান কারণগুলি ব্যবহার
করার কথা ভেবেছিলাম

6

সি (জিসিসি) , 94 89 বাইট

m,n;o(k){for(m=1;m++<k;)if(k%m<1)return m;}
F(N){for(n=N;m=o(n),m-n;n=n/m-~m);N=m<N>N%n;}

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

ব্যাখ্যা

m,n;                  // two global integers
o(k){                 // determine k's smallest divisor
 for(m=1;m++<k;)      // loop through integers 2 to n (inclusive)
  if(k%m<1)return m;} // return found divisor
F(N){                 // determine N's redivosity
 for(n=N;             // save N's initial value
  m=o(n),             // calculate n's smallest divisor (no name clash regarding m)
  m-n;                // loop while o(n)!=n, meaning n is not prime
                      //  (if N was prime, the loop will never be entered)
  n=n/m-~m);          // redivosite procedure, empty loop body
 N=m<N>N%n;}          // m<N evaluates to 0 or 1 depending on N being prime,
                      //  N%n==0 determines whether or not N is divisible by n,
                      //  meaning N could be redivosite => m<N&&N%n==0
                      //  <=> m<N&&N%n<1 <=> m<N&&1>N%n <=> (m<N)>N%n <=> m<N>N%n

4

জেলি , 14 বাইট

ÆḌḊ
Ç.ịS‘µÇ¿eÇ

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

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

ÆḌḊ         Helper link. Argument: k

ÆḌ          Yield k's proper (including 1, but not k) divisors.
  Ḋ         Dequeue; remove the first element (1).


Ç.ịS‘µÇ¿eÇ  Main link. Argument: n

     µ      Combine the links to the left into a chain.
      Ç¿    While the helper link, called with argument n, returns a truthy result,
            i.e., while n is composite, call the chain to the left and update n.
Ç             Call the helper link.
 .ị           At-index 0.5; return the elements at indices 0 (last) and 1 (first).
              This yields [n/d, d].
   S          Take the sum.
    ‘         Increment.
        Ç   Call the helper link on the original value of n.
       e    Test if the result of the while loop belongs to the proper divisors.

4

পাইথন 2 , 97 91 বাইট

r=0;e=d=i=input()
while r-e:e=i;r=[j for j in range(2,i+1)if i%j<1][0];i=i/r-~r
d%e<1<d/e<q

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

প্রস্থান কোড মাধ্যমে আউটপুট।

Ungolfed:

r = 0                             # r is the lowest divisor of the current number,
                                  # initialized to 0 for the while loop condition.
e = d = i = input()               # d remains unchanged, e is the current number
                                  # and i is the next number.
while r != e:                     # If the number is equal to its lowest divisor,
                                  # it is prime and we need to end the loop.
    e = i                         # current number := next number
    r = [j for j in range(2, i+1) # List all divisors of the number in the range [2; number + 1)
         if i%j < 1][0]           # and take the first (lowest) one.
    i = i/r+r+1                   # Calculate the next number.
                                  # We now arrived at a prime number.
print d%e == 0 and d != e         # Print True if our current number divides the input
                                  # and is distinct from the input.
                                  # If our current number is equal to the input,
                                  # the input is prime.

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


3

05 এ বি 1 ই , 17 16 বাইট

[Dp#Òć©sP+>]Ö®p*

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

ব্যাখ্যা

[                  # start loop
 Dp#               # break if current value is prime
    Ò              # get prime factors of current value
     ć©            # extract the smallest (d) and store a copy in register
       sP          # take the product of the rest of the factors
         +>        # add the smallest (d) and increment
           ]       # end loop
            Ö      # check if the input is divisible by the resulting prime
             ®p    # check if the last (d) is prime (true for all composite input)
               *   # multiply

2

পাইথ , 20 বাইট

<P_QiI.WtPHh+/ZKhPZK

এখানে চেষ্টা করুন!

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

iI.WtPHh + / ZKhPZK || পুরো প্রোগ্রাম।

  .ডাব্লু || কার্যকরী যখন। এটি আর্গুমেন্ট হিসাবে দুটি ফাংশন গ্রহণ করে, এ এবং বি।
                 || এ (মান) সত্যবাদী হওয়ার পরে মানটিকে বি (মান) তে পরিণত করুন। দ্য
                 || আরম্ভের মান হ'ল ইনপুট।
    টিপিএইচ || প্রথম ফাংশন, এ। একক যুক্তি নেয়, এইচ।
     পিএইচ || .. এইচ এর প্রধান কারণসমূহ।
    t || .. লেজ (প্রথম উপাদান অপসারণ)। যদিও সত্যবাদী (এইচ সংযুক্ত):
       h + / ZKhPZK || দ্বিতীয় ফাংশন, বি একটি একক যুক্তি নিয়ে জেড:
         / জেড || .. জেড ভাগ করুন, দ্বারা:
           খিপি || .. এটি সর্বনিম্ন মৌলিক উপাদান, এবং কে কে নির্ধারণ করুন   
       এইচ || .. বৃদ্ধি.
        + কে || এবং কে যোগ করুন।
ii || ফলাফল (শেষ মান) ইনপুট ভাগ করে কিনা তা পরীক্ষা করে দেখুন।

এবং প্রথম 4 বাইট ( <P_Q) কেবল ইনপুটটি প্রাইম নয় কিনা তা পরীক্ষা করে দেখুন।

থেকে সাহায্যে Emigna , আমি 3 বাইট সংরক্ষণ পরিচালিত।


আপনি কি head(P)এই fiITZ2অংশটির পরিবর্তে কিছু ব্যবহার করতে পারেন , যেহেতু 1 এর চেয়ে কম ক্ষুদ্রতম বিভাজক সর্বদা প্রধান হবে?
এমিগানা

এমিলিগা নিঞ্জা, স্থির এবং ধন্যবাদ!
মিঃ এক্সকোডার

2

পাইথন 3 , 149 বাইট

def f(N):
	n=N;s=[0]*-~N
	for p in range(2,N):
		if s[p]<1:
			for q in range(p*p,N+1,p):s[q]=s[q]or p
	while s[n]:n=n//s[n]-~s[n]
	return s[N]>1>N%n

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

একটি চালনী পদ্ধতির ব্যবহার। O(N log log N)বড় N(তবে O(N)স্মৃতিতে পূর্ণসংখ্যা সঞ্চয় করে ) এর সাথেও দ্রুত ( = ইরোটোস্টিনিসের চালনের সময় জটিলতা ) হওয়া উচিত

বিঃদ্রঃ:

  • এটি প্রমাণিত হতে পারে যে সমস্ত মধ্যবর্তী মানগুলি nঅতিক্রম করে না Nএবং ছাঁটাইয়ের পরিবর্তে N > 7 pহতে পারে ।range(2,N)range(2,N+1)
  • /কাজ করে না, //ব্যবহার করতে হবে, কারণ তালিকা সূচক।
  • rangeদুর্ভাগ্যক্রমে, অন্য ভেরিয়েবলের মধ্যে সংরক্ষণ করা সাহায্য করে না।

ব্যাখ্যা:

  • -~N== N+1
  • প্রথমে অ্যারেটি sজিরো দিয়ে শুরু করা হয় N+1(পাইথন 0-সূচক হয়, সুতরাং সূচকগুলি হয় 0..N)
  • আরম্ভের পর s[n]হতে বলে আশা করা হচ্ছে 0যদি nএকটি মৌলিক, এবং pজন্য pন্যূনতম মৌলিক যা ভাগ nযদি nএকটি যৌগিক হয়। s[0]এবং s[1]মানগুলি গুরুত্বপূর্ণ নয়।
  • pপরিসীমা প্রতিটি জন্য [2 .. N-1]:

    • যদি s[p] < 1(এটি হ'ল s[p] == 0) তবে pতা প্রধান এবং প্রত্যেকটির জন্য qএকাধিক pএবং s[q] == 0নির্ধারিত s[q] = p
  • সর্বশেষ 2 লাইনগুলি n//s[n]-~s[n]== ব্যতীত সরল (n // s[n]) + s[n] + 1


পাইথন 3 , 118 বাইট

def f(N):
	n=N;s=[0]*-~N
	for p in range(N,1,-1):s[2*p::p]=(N-p)//p*[p]
	while s[n]:n=n//s[n]-~s[n]
	return s[N]>1>N%n

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

কিছুটা খারাপ পারফরম্যান্সের দামে। (এটি O(N log N)সময়ের জটিলতায় চলে, পাইথনের টুকরোটির যুক্তিসঙ্গত বাস্তবায়ন অনুমান)


সমমানের সম্পূর্ণ প্রোগ্রামটি 117 বাইট


আপনি 149 বাইটের n//s[n]-~s[n]পরিবর্তে ব্যবহার করতে পারেন n//s[n]+s[n]+1
মিঃ এক্সকডার

@ মিঃ এক্সকোডার ধন্যবাদ!
ব্যবহারকারী 202729

এছাড়াও আমিও or pহতে পারি বলে মনে করি|p
মিঃ এক্সকোডার

@ মিঃ এক্সকোডার নং, or pলজিকাল বা |pবা বিটওয়াইস সম্পাদন করার সময় বা সম্পাদন করে। যে, a or bহয় b if a == 0 else a
ব্যবহারকারী 202729

এর পরিবর্তে আরেকটি স্লাইস ব্যবহার করতে আপনি বাইরেরটি পরিবর্তন forকরতে পারেনforrangeবিপরীত হয়, তাই কম সূচী বড় বাড়িগুলো ওভাররাইট করবে ও এতে স্লাইস শুরু এ 2*pআপনি প্রতিস্থাপিত করবে না s[0]বা s[p]
রড




1

জাপট, 25 24 বাইট

আমি আশঙ্কা করছি যে এটির সাথে আমি ভুল দিকে চলে যেতে পারি তবে আমি ভিন্ন পদ্ধতির চেষ্টা করার জন্য খুব বেশি সময় পেলাম।

0মিথ্যা বা 1সত্যের আউটপুট ।

j ?V©vU :ßU/(U=k g)+°UNg

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


0

পার্ল 5 , 291 + 1 (-a) = 292 বাইট

নেটিভ প্রাইম পরীক্ষক না থাকার জন্য ডার্ন পার্ল

use POSIX;&r($_,$_);
sub p{$n=shift;if($n<=1){return;}if($n==2||$n==3){return 1;}if($n%2==0||$n%3==0){return;}for(5..ceil($n/2)){if($n%$_==0){return;}}return 1;}
sub r{$n=shift;$o=shift;if(&p($n)){print $o%$n==0&&$n!=$o?1:0;last;}for(2..ceil($n/2)){if($n%$_==0){&r(($n/$_)+$_+1, $o);last;}}}

অবরুদ্ধ সংস্করণ,

use POSIX;
&r($_,$_);
sub p{
    my $n=shift;
    if($n<=1){
        return;
    }
    if($n==2||$n==3){
        return 1;
    }
    if($n%2==0||$n%3==0){
        return;
    }
    for(5..ceil($n/2)){
        if($n%$_==0){
            return;
        }
    }
    return 1;
}
sub r{
    my $n=shift;
    my $o=shift;
    if(&p($n)){
        print $o%$n==0&&$n!=$o ? 1 : 0;
        last;
    }
    for(2..ceil($n/2)){
        if($n%$_==0){
            &r(($n/$_)+$_+1, $o);
            last;
        }
    }
}

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


0

ওল্ফ্রাম ভাষা (গণিত) , a৪ বাইট

পুনরাবৃত্ত প্যাটার্ন প্রতিস্থাপন ব্যবহার করে সোজাভাবে বাস্তবায়ন

("∣" ভাগ করে "" ∣ "চিহ্নের পরিবর্তে 7 বাইট সংরক্ষণ করে)

(g=!PrimeQ@#&)@#&&(#//.x_/;g@x:>x/(c=Divisors[x][[2]])+c+1)\[Divides]#&

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



0

জে , 35 বাইট

(~:*0=|~)(1+d+]%d=.0{q:)^:(0&p:)^:_

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

@ ডেনিসের জেলি সলিউশন (আগে আমি ব্যবহার করছিলাম <./@q:) থেকে সর্বনিম্ন বিভাজকটি প্রথম প্রধান কারণ হিসাবে চুরি হয়েছিল ।

পুনরাবৃত্তি করার আরও ভাল উপায় থাকা উচিত, তবে আমি এটি খুঁজে পাচ্ছি না। আমি প্রাথমিকতা পরীক্ষা ( ^:(0&p:)) এর পরিবর্তে বিরূপ ব্যবহার করা এড়িয়ে চলার কথা ভেবেছিলাম তবে মনে হচ্ছে এটি কিছুটা দীর্ঘ হবে কারণ আপনার একটি _2{এবং কিছু পরিবর্তন প্রয়োজন যা নেট হ্রাস নাও দিতে পারে।

আমি সত্যিই অনুভব করি যে প্রাথমিকতা চেকের আশেপাশে প্যারেনস এড়াতে কোনও উপায় থাকতে হবে।

ব্যাখ্যা (প্রসারিত)

(~: * 0 = |~)(1 + d + ] % d =. 0 { q:) ^: (0&p:) ^:_ Input: N
             (1 + d + ] % d =. 0 { q:) ^: (0&p:) ^:_ Find the final N'
                                       ^:        ^:_  Do while
                                           0&p:       N is not prime
                                   q:                 Get prime factors (in order)
                               0 {                    Take first (smallest divisor)
                          d =.                        Assign this value to d
             1 + d + ] %  d                           Compute (N/d) + 1 + d
(~: * 0 = |~)                                        Is it redivosite?
      0 = |~                                          N = 0 (mod N'), i.e. N'|N
    *                                                 And
 ~:                                                   N =/= N', i.e. N is not prime

0

এপিএল NARS, 43 অক্ষর, 85 বাইট

{(⍵≤6)∨0π⍵:0⋄⍵{1=⍴t←π⍵:0=⍵|⍺⋄⍺∇1+↑t+⍵÷↑t}⍵}

(আশা করি এটি সমস্ত সংখ্যার> 6) পরীক্ষার জন্য রূপান্তর করবে:

h←{(⍵≤6)∨0π⍵:0⋄⍵{1=⍴t←π⍵:0=⍵|⍺⋄⍺∇1+↑t+⍵÷↑t}⍵}
v←⍳100     
v,¨h¨v
   1 0  2 0  3 0  4 0  5 0  6 0  7 0  8 0  9 0  10 0  11 0
   12 0  13 0  14 1  15 0  16 0  17 0  18 0  19 0  20 0  
   21 0  22 0  23 0  24 0  25 0  26 0  27 0  28 0  29 0  
   30 0  31 0  32 0  33 0  34 0  35 0  36 0  37 0  38 0  
   39 0  40 0  41 0  42 1  43 0  44 1  45 0  46 0  47 0  
   48 0  49 1  50 0  51 0  52 0  53 0  54 0  55 0  56 0  
   57 0  58 0  59 0  60 0  61 0  62 0  63 0  64 0  65 0  
   66 1  67 0  68 0  69 0  70 1  71 0  72 0  73 0  74 0  
   75 0  76 0  77 0  78 0  79 0  80 0  81 0  82 0  83 0  
   84 0  85 0  86 0  87 0  88 0  89 0  90 0  91 0  92 0  
   93 0  94 0  95 0  96 0  97 0  98 0  99 0  100 0  

2 বেনামি ফাংশন ব্যবহার করার ধারণাটি আমি অন্যান্য এপিএল সমাধানে পাই।

 {(⍵≤60)∨π⍵:0⋄ -- if arg ⍵ is prime or <=6 return 0
  ⍵{1=⍴t←π⍵:0=⍵|⍺⋄ -- if list of factors ⍵ has length 1 (it is prime)
                    -- then return ⍺mod⍵==0
  ⍺∇1+↑t+⍵÷↑t}⍵}   -- else recall this function with args ⍺ and 1+↑t+⍵÷↑t

0

পাইট , 44 বাইট

←⁻0`ŕ⁺ĐĐϼ↓Đ3Ș⇹÷+⁺Đṗ¬⇹⁻⇹łŕáĐ0⦋Đ↔ĐŁ⁻⦋⁺|¬⇹ṗ⇹3Ș⊽

ব্যাখ্যার জন্য নীচের কোডটি দেখুন - কেবলমাত্র পার্থক্য হ'ল (1) লুপের শুরুতে বর্ধনের জন্য হিসাব করার আগে এন হ্রাস করা হয়, এবং (2) এটি ওআর এর পরিবর্তে এনওআর ব্যবহার করে।

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



আমি প্রশ্নটি পুনরায় পড়ার আগে এটি তৈরি করেছিলাম এবং লক্ষ্য করেছি যে এটি কেবল সত্য / মিথ্যা চায়।

পাইট, 52 বাইট

60`ŕ⁺ĐĐϼ↓Đ3Ș⇹÷+⁺Đṗ¬⇹⁻⇹łŕáĐ0⦋Đ↔ĐŁ⁻⦋⁺|¬⇹Đṗ⇹3Ș∨ł⇹Đƥ⇹ŕ1ł

রেডিবোসাইট সংখ্যাগুলির অসীম তালিকা মুদ্রণ করে।

ব্যাখ্যা:

6                                                            Push 6
 0                                                           Push unused character
  `                   ł                     ł      ł         Return point for all three loops
   ŕ                                                         Remove top of stack
    ⁺                                                        Increment top of stack (n)
     ĐĐ                                                      Triplicate top of stack (n)
       ϼ↓                                                    Get smallest prime factor of n (returns 1 if n is prime) 
         Đ                                                   Duplicate top of stack
          3Ș⇹                                                Manipulate stack so that the top is (in descending order): [d,(N,N'),d]
             ÷+⁺                                             Calculates N'=(N,N')/d+d+1
                Đṗ¬                                          Is N' not prime?
                   ⇹⁻⇹                                       Decrement N' (so the increment at the beginning doesn't change the value), and keep the boolean on top - end of innermost loop (it loops if top of stack is true)
                       ŕ                                     Remove top of stack
                        á                                    Convert stack to array
                         Đ                                   Duplicate array
                          0⦋Đ                                Get the first element (N)
                             ↔ĐŁ⁻⦋                           Get the last element ((final N')-1)
                                  ⁺                          Increment to get (final N')
                                   |¬                        Does N' not divide N?
                                     ⇹Đṗ                     Is N prime?
                                        ⇹3Ș∨                 Is N prime or does N' not divide N? - end of second loop (loops if top of stack is true)
                                             ⇹Đƥ⇹ŕ           Print N, and reduce stack to [N]
                                                  1          Push garbage (pushes 1 so that the outermost loop does not terminate)


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

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