বারবার বৃহত্তম সংখ্যার চেয়ে কম বাদ দিয়ে সংখ্যাটি কী 1 এ পৌঁছাতে পারে?


27

চ্যালেঞ্জ:

একটি নম্বর দেওয়া হয়েছে, এটির চেয়ে সর্বাধিক প্রধানতম নিন, এই সংখ্যাটি থেকে এটি বিয়োগ করুন, আবার নতুন সংখ্যায় এটির চেয়ে কম বৃহত্তম প্রাইম সহ করুন এবং এটি 3 এর চেয়ে কম হওয়া অবধি এটি চালিয়ে যান your প্রোগ্রামের একটি সত্যবাদী মান আউটপুট করা উচিত, অন্যথায়, প্রোগ্রামটির একটি মিথ্যা মান আউটপুট করা উচিত।

উদাহরণ:

এই সমস্তগুলির একটি সত্যবাদী মূল্য দেওয়া উচিত:

3
4
6
8
10
11
12
14
16
17
18
20
22
23
24
26
27
29
30
32
34
35
37
38
40
41
42
44
46
47
48
50

এগুলির সকলের ভুয়া মান দেওয়া উচিত:

5
7
9
13
15
19
21
25
28
31
33
36
39
43
45
49

নিয়মাবলী:


সম্পর্কিত oeis.org/A175071
flawr

1
5-3 = 2, 2 - (- 2) = 4, 4-3 = 1। (/ বুদ্ধিমানের)

@ হার্কাইল -২ = -1 × 2, সুতরাং এটি প্রাথমিক নয় ;-)
ইটিএইচ প্রোডাকশনস

1
@ ইথ প্রডাকশনস: আহ, তবে -১ একটি ইউনিট; যে অনুকরণটি 2-((1) × (-2) এর চেয়ে 2 = (- 1) 2. (-2) এর 2 এর বেশি (2 এমনকি 1 = 1 × 2)

3
@ ইথ প্রডাকশনস: যুক্তিযুক্ত সংখ্যাগুলি আকর্ষণীয় কারণ দুটি অত্যন্ত ভিন্ন পন্থা রয়েছে যা অনুশীলনে কার্যকর! যুক্তিযুক্ত সংখ্যার কোনও প্রাইম নেই (এমনকি 2 নয়!) কারণ সমস্ত কিছুই একক। যাইহোক, আপনি যুক্তিগুলি থেকে তৈরি নির্মাণ হিসাবেও যুক্তিগুলি দেখতে পারেন এবং পূর্ণসংখ্যার প্রধানগুলি ব্যবহার করে সেগুলি অধ্যয়ন করতে পারেন। (উদাহরণস্বরূপ যে কেউ 9/10যেহেতু 2^(-1) 3^2 5^(-1)মূল

উত্তর:


8

জেলি , 9 8 বাইট

’ÆRṪạµ¡Ḃ

এটি অনলাইন চেষ্টা করুন! বা সমস্ত পরীক্ষার কেস যাচাই করুন

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

’ÆRṪạµ¡Ḃ  Main link. Argument: n

     µ    Combine all atoms to the left into a chain.
’           Decrement; yield n - 1.
 ÆR         Prime range; yield all primes in [2, ..., n -1].
   Ṫ        Tail; yield p, the last prime in the range.
            If the range is empty, this yields p = 0.
    ạ       Compute the absolute difference of p and n.
      ¡   Call the chain to the left n times.
          This suffices since each iteration decreases n, until one of the fixed
          points (1 or 2) is reached.
       Ḃ  Bit; return the parity of the fixed point.

11

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

.+
$*
+`1(?!(11+)\1+$)11+
1
^1$

মুদ্রণ 0(মিথ্যা) বা 1(সত্যবাদী)।

এটি অনলাইন চেষ্টা করুন! (প্রথম লাইন একটি লাইনফিড-বিচ্ছিন্ন পরীক্ষা স্যুট সক্ষম করে))

ব্যাখ্যা

.+
$*

ইনপুট চালু করার মাধ্যমে ইউনারী ইনপুট রূপান্তর Nমধ্যে Nকপি 1

+`1(?!(11+)\1+$)11+
1

বারবার বৃহত্তম ইনপুট চেয়ে কম প্রধান মুছে ফেলুন। এটি রেগেক্সের সাথে মানক প্রাথমিক পরীক্ষার উপর ভিত্তি করে ।

^1$

ফলাফলটি একক কিনা তা পরীক্ষা করে দেখুন 1


কীভাবে আপনি আনতাহীনতা ছাড়াই রেটিনা ব্যবহার করতে পারেন? ওও
অ্যাডিসন ক্রম্প

@ সিক্সার প্রথম দুটি লাইন ইনপুটটিকে অ্যানারিতে রূপান্তর করে।
মার্টিন এন্ডার

এর অর্থ এই নয় যে আপনি তাদের মুছে ফেলতে এবং একা ইনপুটটির জন্য অনুরোধ করতে পারেন?
অ্যাডিসন ক্রম্প

2
@ সাইক্সার আমি পারলাম, তবে আমি তা করা বন্ধ করে দিয়েছি। এটিকে ডিজে আই / ও ফর্ম্যাটের মতো মনে হয় এবং এখন রূপান্তরটি 6 বাইট (এটি আগে যে 200 ডলার হিসাবে ছিল তার বিপরীতে), আমি মনে করি না রেটিনা "দশমিকের মধ্যে যুক্তিসঙ্গতভাবে ইনপুট নিতে পারে না" বলে গণনা করে।
মার্টিন এন্ডার

আহ আমি দেখি. আমি কেবল কখনও রেটিনাতে অবিচ্ছিন্ন ইনপুট দেখেছি, এইভাবে আমার বিভ্রান্তি।
অ্যাডিসন ক্রম্প

8

পাইথ, 18 15 14 বাইট

-২ বাইটের জন্য @ মাল্টেসেনকে ধন্যবাদ

#=-QefP_TUQ)q1

একটি প্রোগ্রাম যা এসটিডিআইএন এবং প্রিন্টগুলিতে Trueবা Falseযথাযথ হিসাবে ইনপুট নেয় ।

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

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

#=-QefP_TUQ)q1  Program. Input: Q
#          )    Loop until error statement (which occurs when Q<3):
         UQ      Yield [0, 1, 2, 3, ..., Q-1]
     fP_T        Filter that by primality
    e            Yield the last element of that
 =-Q             Q = Q - that
            q1  Q is 1 (implicit variable fill)
                Implicitly print

হ্রাস, 18 বাইট সহ পুরানো সংস্করণ

qu-G*<HGH_fP_TSQQ1

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

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

qu-G*<HGH_fP_TSQQ1  Program. Input: Q
              SQ    Yield [1, 2, 3, ..., Q]
          fP_T      Filter that by primality
         _          Reverse it
 u                  Reduce it:
                Q    with base case Q and
                     function G, H -> 
     <HG              H<G
    *   H             *H (yields H if H<G, else 0)
  -G                  Subtract that from G
q                1  The result of that is 1
                    Implicitly print

Stহয় U15 অক্ষর
Maltysen

7

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

@ নীলকে ধন্যবাদ 1 বাইট সংরক্ষিত

g=(x,n=x-1)=>n<2?x:x%n?g(x,n-1):g(x-1)
f=x=>x<3?x%2:f(x-g(x-1))

আমি এটি 2 মিনিটের মধ্যে লিখেছিলাম ... এবং এটি প্রথমবারে পুরোপুরি কার্যকর হয়েছিল। অনিবার্য বাগের বিজয় সন্ধানকারী প্রথম ব্যবহারকারী ....

চেষ্টা কর

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

প্রথমে আমরা g (x) কে ফাংশন হিসাবে সংজ্ঞায়িত করি যা প্রথম প্রধান সংখ্যা পি <= x খুঁজে পায় । এটি নিম্নলিখিত প্রক্রিয়াটি ব্যবহার করে করা হয়:

  1. N = x-1 দিয়ে শুরু করুন ।
  2. যদি এন <2 , x প্রাইম হয়; আসতে এক্স
  3. X যদি n দ্বারা বিভাজ্য হয় তবে হ্রাস x এবং পদক্ষেপ 1 এ যান।
  4. অন্যথায়, হ্রাস n এবং পদক্ষেপ 2 এ যান।

এই চ্যালেঞ্জের সমাধান, চ (এক্স) এখন মোটামুটি সোজা:

  1. তাহলে এক্স <3 , এর বিনিময়ে এক্স = 1
  2. অন্যথায়, ছ (x-1) বিয়োগ করুন এবং আবার চেষ্টা করুন।

4326, যা সত্যটি ফিরে আসবে তা ফিরে আসবে বলে মনে হয় না, তবে 4328 (সত্য) এবং 4329 (মিথ্যা) করে, এটি কি জেএস সীমাবদ্ধতা বা কোনও বাগ?
জোনাথন অ্যালান

@ জোনাথন অ্যালান 4326 too much recursionফায়ারফক্স ৪৮-এ ব্রাউজার কনসোলে ছুড়েছে , তাই আমি অনুমান করি যে পুনরাবৃত্তিটি এফএফের পুনরাবৃত্তি সীমাটি অতিক্রম করে।
ETH প্রোডাকশনস

হ্যাঁ, পরবর্তী প্রাইম ডাউনটি 4297 (এবং পরবর্তীটি 4327), যার ফলে 4328 কাজ করে।
জোনাথন অ্যালান

4
x%2আপনি একটি বাইট ওভার সংরক্ষণ করা উচিত x==1
নীল

@ নীল আমি কখনই এটির কথা চিন্তা করতাম না :-)
ETH প্রোডাকশনগুলি

6

পাইকে, 15 11 বাইট

WDU#_P)e-Dt

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

            - stack = input
W           - while continue:
  U#_P)     -     filter(is_prime, range(stack))
       e    -    ^[-1]
 D      -   -   stack-^
         Dt -  continue = ^ != 1

রিটার্নস 1সত্য যদি এবং একটি ব্যতিক্রম যদি মিথ্যা উত্থাপন


5

জুলিয়া, 32 বাইট

এটি ভাষাগুলির মধ্যে সংক্ষিপ্ততম সমাধান হতে চলেছে না, তবে এটি মানব-পঠনযোগ্যগুলির মধ্যে সংক্ষিপ্ততম হতে পারে ...

!n=n>2?!(n-primes(n-1)[end]):n<2

অথবা, এটিকে কিছুটা পরিষ্কার পরিভাষায় রাখতে

function !(n)
  if n>2
    m=primes(n-1)[end]   # Gets largest prime less than n
    return !(n-m)        # Recurses
  else
    return n<2           # Gives true if n is 1 and false if n is 2
  end
end

বলা হয়, উদাহরণস্বরূপ !37,।


3

গণিত, 32 বাইট

2>(#//.x_/;x>2:>x+NextPrime@-x)&

এটি একটি নামবিহীন ফাংশন যা একটি পূর্ণসংখ্যা নেয় এবং একটি বুলিয়ান দেয়।

ব্যাখ্যা

এখানে প্রচুর বাক্য গঠন এবং মজাদার পড়ার ক্রম রয়েছে, তাই ...

   #                               This is simply the argument of the function.
    //.                            This is the 'ReplaceRepeated' operator, which applies
                                   a substitution until the its left-hand argument stops
                                   changing.
       x_/;x>2                     The substitution pattern. Matches any expression x as
                                   long as that expression is greater than 2.
              :>                   Replace that with...
                  NextPrime@-x     Mathematica has a NextPrime built-in but no
                                   PreviousPrime built-in. Conveniently, NextPrime
                                   works with negative inputs and then gives you the 
                                   next "negative prime" which is basically a
                                   PreviousPrime function (just with an added minus sign).
                x+                 This gets added to x, which subtracts the previous
                                   prime from it.
2>(                           )    Finally, we check whether the result is less than 2.

ঘনিষ্ঠভাবে বীট #+0~Min~NextPrime@-#&~FixedPoint~#==1&(36 বাইট)। ভাল ব্যবহার //.!
গ্রেগ মার্টিন

1
আপনি গ্রেগমার্টিন 35 যখন আপনি <2শেষে ব্যবহার করবেন ।
মার্টিন এন্ডার

3

পাইথন 3, 102 92 90 89 88 বাইট

f=lambda n:n<2if n<3else f(n-[x for x in range(2,n)if all(x%y for y in range(2,x))][-1])

গল্ফিং পরামর্শ স্বাগত! আমি দেখতে পাচ্ছি যে gmpyএটিতে একটি ফাংশন রয়েছে next_primeতবে আমি এটি এখনও পরীক্ষা করতে পারি না :(

-২ বাইটস, @ জোনাথন অ্যালানকে ধন্যবাদ !

-1 বাইট, @ অ্যারনকে ধন্যবাদ !

Testcases

f=lambda n:n<2if n<3else f(n-[x for x in range(2,n)if all(x%y for y in range(2,x))][-1])

s="3 4 6 8 10 11 12 14 16 17 18 20 22"
h="5 7 9 13 15 19 21 25 28 31 33 36 39"

for j in s.split(" "):print(f(int(j)))
for j in h.split(" "):print(f(int(j)))

আউটপুট 13 সত্যবাদী মান এবং 13 টি ভুয়া মান। sসত্যবাদী মামলা এবং hমিথ্যা রয়েছে।


1
if all(x%y for...কাজ করে
জোনাথন অ্যালান

1
n<3 else-> n<3elseআমার হিসাবে একই দৈর্ঘ্য পেতে;)
হারুন

2

পাইথন, সিম্পি সহ, 60 বাইট

import sympy
f=lambda n:n>2and f(n-sympy.prevprime(n))or n<2

আমার আগের পদ্ধতিটি পুনরাবৃত্তি ব্যবহার করে সিম্পি ছাড়াই 83 বাইট ছিল, তবে আমি পৃথক এবং ধারাবাহিক বলতে সত্যবাদী / মিথ্যা গ্রহণ করেছি, তবে আমাকে অবহিত করা হয়েছে এটি একটি ভুল ব্যাখ্যা। লেজের কারণে আমি এটিকে উদ্ধার করতে পারব না, তবে কেউ কীভাবে এটি করতে হয় সে ক্ষেত্রে আমি এটি এখানে রেখে দেব:

f=lambda n,p=0:n>2and(any(p%x==0for x in range(2,p))and f(n,p-1)or f(n-p,n+~p))or n


@ mbomb007 আমি ভেবেছিলাম চশমাগুলি "সত্য বা মিথ্যা" যদি এটির প্রয়োজন হয় তবে "সত্যবাদী বা মিথ্যা" অর্থ পৃথক এবং সামঞ্জস্যপূর্ণ?
জোনাথন অ্যালান

1
নাঃ। আমরা মেটা সাইটে সিদ্ধান্ত হিসাবে সেগুলি সংজ্ঞায়িত করা হয়। "স্বতন্ত্র এবং সামঞ্জস্যপূর্ণ" আউটপুটকে মঞ্জুরি দেয় এমন কোনও প্রশ্নের ক্ষেত্রে অবশ্যই সত্য / মিথ্যা বলার পরিবর্তে তা নির্দিষ্ট করা আবশ্যক।
mbomb007

ঠিক আছে আমি পড়তে এই , কিছু সময়ে আপডেট হবে ...
জনাথন অ্যালান

1

Vitsy, 28 26 বাইট

এটি অবশ্যই সংক্ষিপ্ত করা যেতে পারে।

<]xN0)l1)-1[)/3D-];(pD-1[D

<                    Traverse the code in this direction, rotating on the line.
                     For the sake of reading the code easier, I'm reversing the
                     code on this line. This will be the order executed.

 D[1-Dp(;]-D3/)[1-)1l)0Nx]
 D                         Duplicate the top member of the stack.
  [      ]                 Do the stuff in brackets until break is called.
   1-                      Subtract 1 from the top item of the stack.
     D                     Duplicate the top member of the stack.
      p(                   If the top member is a prime...
        ;                  break;
          -                Pop a, b, push a - b.
           D3/)[         ] If this value is less than 3, do the bracketed code.
                1-         Subtract the top item of the stack by 1.
                  )        If the top item is zero...
                   1       Push 1.
                    l)     If the length of the stack is zero...
                      0    Push 0.
                       N   Output the top member of the stack.
                        x  System.exit(0);

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


1

এমএটিএল , 13 বাইট

`tqZq0)-t2>}o

এটি অনলাইন চেষ্টা করুন! বা একবারে সমস্ত পরীক্ষার কেস যাচাই করুন

ব্যাখ্যা

`        % Do...while
  t      %   Duplicate. Takes input implicitly in the first iteration
  qZq    %   All primes less than that
  0)     %   Get last one
  -      %   Subtract (this result will be used in the next iteration, if any)
  t      %   Duplicate
  2>     %   Does it exceed 2? If so: next iteration. Else: execute the "finally" 
         %   block and exit do...while loop
}        % Finally
  o      %   Parity. Transforms 2 into 0 and 1 into 1
         % End do...while implicitly
         % Display implicitly

1

সিজেম , 21 16 বাইট

4 বাইট সঞ্চয় করার জন্য ডেনিসকে ধন্যবাদ।

ri{_1|{mp},W=-}h

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

ব্যাখ্যা

ri       e# Read input and convert to integer N.
{        e# Run this block as long as N is positive (or until the program aborts
         e# with an error)...
  _1|    e#   Duplicate and OR 1. This rounds up to an odd number. For N > 2, this
         e#   will never affect the greatest prime less than N.
  {mp},  e#   Get all primes from 0 to (N|1)-1.
         e#   For N > 2, this will contain all primes less than N.
         e#   For N = 2, this will contain only 2.
         e#   For N = 1, this will be empty.
  W=     e#   Select the last element (largest prime up to (N|1)-1).
         e#   For N = 1, this will result in an error and terminate the program, which
         e#   still prints the stack contents though (which are 1, the desired output).
  -      e#   Subtract from N. Note that this gives us 0 for N = 2, which terminates the 
         e#   loop.
}h

ri_{_1|{mp},W=-}*কাজ করা উচিত.
ডেনিস

@ ডেনিস ধন্যবাদ, 1|সত্যিই চালাক। :) (এবং আমি সর্বদা এটি ভুলে যাই যে {...},একটি অন্তর্নিহিত পরিসরটি করে ...)
মার্টিন এন্ডার

1

পার্ল, 42 বাইট

এর জন্য +1 অন্তর্ভুক্ত -p

STDIN এ ইনপুট দিয়ে চালান

reach1.pl:

#!/usr/bin/perl -p
$_=1x$_;$_=$`while/\B(?!(11+)\1+$|$)|11$/

ক্লাসিক প্রিমিমিলিটি রেজেক্স ব্যবহার করে


1

.NET Regex, 38 বাইট

এটি দেখানোর জন্য এটি একটি একক রেজেেক্সে চেক করা যায়।

^(?>(?<=(.*))..+(?<!^\1\2+(.+.)|$))+.$

ইনপুটটি অচেনা হয়ে থাকে বলে ধরে নেওয়া হয়।

ব্যাখ্যা

এটি কেবলমাত্র শব্দের প্রয়োজনীয়তা প্রয়োগ করে, বারবার বৃহত্তম প্রাইম সরিয়ে দেয় এবং বাকি 1 আছে কিনা তা যাচাই করে।

  • (?>(?<=(.*))..+(?<!^\1\2+(.+.)|$))+: নন-ব্যাকট্র্যাকিং গ্রুপটি নিশ্চিত করে যে আমরা যে সর্বাধিক প্রাইম পেয়েছি তা ওভাররেড না হয়ে গেছে, এবং +কেবল বৃহত্তম প্রাইমটির সাথে মিলে যাওয়ার প্রক্রিয়াটি পুনরাবৃত্তি করে।

    • (?<=(.*))..+(?<!^\1\2+(.+.)|$): বাকি সংখ্যার চেয়ে সবচেয়ে বড় প্রাইমটি মিলান

      • (?<=(.*)): দৃser়তার জন্য একটি "অ্যাঙ্কর" পয়েন্ট স্থাপন করতে আমরা কতটা বিয়োগ করেছি তা রেকর্ড করুন।

      • ..+: সর্বাধিক সংখ্যার সন্ধান করুন ...

      • (?<!^\1\2+(.+.)|$): ... যা প্রধান এবং বাকী সংখ্যার চেয়ে কম।
        • (?<!^\1\2+(.+.)): আমরা পরীক্ষামূলকভাবে পরীক্ষার রুটিনটি ^\1সামনে পরীক্ষা করে নিশ্চিত করে নিই যে আমরা যে পরিমাণটি মিলেছি তা পরীক্ষা করে নিই..+
        • (?!<$): বাকি সংখ্যার চেয়ে কম জোর দিন

(?<=(.*))অংশ বরং কদাকার হয়। আরও ভাল উপায় আছে কিনা তা নিশ্চিত নয়। এছাড়াও, আমি আগ্রহী আমি যদি পিসিআরইতে কোনও সমাধান থাকে।
n̴̖̋h̷͉̃a̷̭̿h̸̡̅ẗ̵̨́d̷̰̀ĥ̷̳

0

পার্ল 6 ,  54 53 52  51 বাইট

{($_,{$_-($_-1...2).first: *.is-prime}...3>*)[*-1]==1}
{($_,{$_-($_-1...2).first: *.is-prime}...3>*).any==1}
{any($_,{$_-($_-1...2).first: *.is-prime}...3>*)==1}
{any($_,{$_-(^$_).grep(*.is-prime)[*-1]}...3>*)==1}

ব্যাখ্যা:

# bare block lambda with implicit parameter 「$_」
# used to generate all of the rest of the elements of the sequence
{
  # create an any Junction of the following list
  any(
    $_, # initialize sequence with the inner block's argument

    # bare block lambda with implicit parameter 「$_」
    {
      # take this inner block's argument and subtract
      $_ -

      ( ^$_ )            # Range up-to and excluding 「$_」
      .grep(*.is-prime)\ # find the primes
      [ * - 1 ]          # return the last value
    }

    ...   # keep doing that until

    3 > * # the result is less than 3

  # test that Junction against 「1」
  # ( returns an 「any」 Junction like 「any(False, False, True)」 )
  ) == 1
}

উদাহরণ:

# show what is returned and if it is truthy
sub show ($_) {
  # 「.&{…}」 uses the block as a method and implicitly against 「$_」
  my $value = .&{any($_,{$_-(^$_).grep(*.is-prime)[*-1]}...3>*)==1}
  say join "\t", $_, ?$value, $value.gist;
}

show 3;  # 3    True    any(False, True)
show 4;  # 4    True    any(False, True)
show 5;  # 5    False   any(False, False)
show 10; # 10   True    any(False, False, True)
show 28; # 28   False   any(False, False, False)
show 49; # 49   False   any(False, False)
show 50; # 50   True    any(False, False, True)

0

অনিয়মিত , 63 বাইট

p~?1_$-1p:;
n=i(0)?1_$-1p:;
_~
N=n
1(?!(11+)\1+$)11+~1
^11$~0
N

আমি এই ভাষাটি দুই দিন আগে তৈরি করেছি এবং প্রাথমিক প্রাঙ্গনে হ'ল লুপগুলিতে কোনও বিল্ড নেই, কেবলমাত্র বৈশিষ্ট্যগুলি হল বুনিয়াদি গাণিতিক এবং সিদ্ধান্ত গ্রহণ এবং প্রোগ্রাম মূল্যায়ন নিয়মিত অভিব্যক্তির উপর ভিত্তি করে।

ব্যাখ্যা

p~?1_$-1p:;
n=i(0)?1_$-1p:;
_~
N=n

এই অংশটি ইনপুটটিকে অ্যানারিতে রূপান্তর করে। এটি বারবার প্রিন্ট 1_করে 0 এর সমান হওয়া অবধি ইনপুট থেকে 1 টি বিয়োগ করে । এরপরে এটি সমস্ত _গুলি সরিয়ে দেয় । আমি যদি আমার কোডটিতে একটি ভুলে না গিয়েছিলাম তবে breakএটি লিখতে পারে:

p~?1_$-1p:;
_~
n=i(0)?1_$-1p:;

পরবর্তী অংশটি বারবার ইনপুট থেকে সর্বদা সবচেয়ে বড় মুছে ফেলা হয় যতক্ষণ না এটি সমান 1বা এর 11সাথে 11প্রতিস্থাপিত হয় 0

1(?!(11+)\1+$)11+~1
^11$~0
N

আমি মার্টিন এন্ডারের উত্তর থেকে রেজিक्सটি ব্যবহার করেছি ।


0

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

সত্যিই সংক্ষিপ্ত নয় তবে পয়েন্টফ্রি :)

(<2).until(<3)(until(flip(`until`(+1))2.(.)(<1).mod>>=(==))pred.pred>>=flip(-))

0

পাওয়ারশেল ভি 2 +, 81 বাইট

param($n)while($n-gt2){$n-=(($n-1)..2|?{'1'*$_-match'^(?!(..+)\1+$)..'})[0]}!--$n

ইনপুট নেয় $n। এখনও বা তার চেয়েও বেশি whileলুপে প্রবেশ করে En প্রতিটি পুনরাবৃত্তি, থেকে একটি সংখ্যা বিয়োগ করে । নম্বরটি হ'ল ( ) অপারেটরের মাধ্যমে কোনও রেঞ্জের বিরুদ্ধে প্রয়োগ করা রেজেক্স প্রিমিটিটি পরীক্ষার ফলাফল , তারপরে ফলাফলের প্রথম (যেহেতু পরিসীমা হ্রাস পাচ্ছে, ফলাফলটি সবচেয়ে বেশি নির্বাচিত হচ্ছে)। লুপটি শেষ করার পরে হয় হয় হয় বা সংজ্ঞা অনুসারে হয়, তাই আমরা প্রাক-হ্রাস (একে একে বা এটিকে রূপান্তরিত করব ), এবং এর বুলিয়ান গ্রহণ করি না । এটি পাইপলাইনে রেখে গেছে এবং আউটপুট অন্তর্ভুক্ত।$n3$n($n-1)..2Where-Object?[0]$n12$n01!

উদাহরণ

PS C:\Tools\Scripts\golfing> 3..20|%{"$_ --> "+(.\can-the-number-reach-one.ps1 $_)}
3 --> True
4 --> True
5 --> False
6 --> True
7 --> False
8 --> True
9 --> False
10 --> True
11 --> True
12 --> True
13 --> False
14 --> True
15 --> False
16 --> True
17 --> True
18 --> True
19 --> False
20 --> True

0

মতলব, 51 বাইট

v=@(x)x-max(primes(x-1));while(x>=3)x=v(x);end;x==1

এটি ETHProductions দ্বারা জেএস 6 সমাধানের মতো খুব অনুরূপ তবে ওয়ার্কস্পেসে থাকার জন্য ভেরিয়েবলের প্রয়োজন।


0

পাইথন ২.7: 88 87 বাইট

r=lambda n:n>2and r(n-[a for a in range(2,n)if all(a%b for b in range(2,a))][-1])or n<2

থুএক্স @ টুকুকএক্স -1 আরও বাইটের জন্য!


1
আপনার বিবরণ আপডেট করুন;) এছাড়াও, আপনি n<2পরিবর্তে বলে একটি বাইট সংরক্ষণ করতে পারে n==1
Yytsi


0

ক্লোজার, 125 বাইট

#(loop[x %](if(> x 2)(recur(- x(loop[y(dec x)](if(some zero?(vec(for[z(range 2 y)](mod y z))))(recur(dec y))y))))(quot 1 x)))

হায়, এটি কোডের একটি দীর্ঘ অংশ। সবচেয়ে ভার্জোজ ভাষা আবার আঘাত!

Ungolfed:

(defn subprime [n]
  (loop [x n]
    (if (> x 2)
      (recur
        (- x
          (loop [y (dec x)]
            (if (some zero? (vec (for [z (range 2 y)] (mod y z))))
              (recur (dec y)) y))))
      (quot 1 x))))
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.