আমার নম্বরটি কি ডি পলিনাক নম্বর?


21

বেশ কয়েকটি যদি এবং কেবল যদি এটি একটি ডি Polignac সংখ্যা বিজোড় এবং না পারেন, আকারে উপস্থাপিত করা যেতে P + 2 এন যেখানে এন একটি অ-নেতিবাচক পূর্ণসংখ্যা এবং পি একটি মৌলিক পূর্ণসংখ্যা।

কার্য

এমন কিছু কোড লিখুন যা ইতিবাচক পূর্ণসংখ্যার কাজ করে এবং নির্ধারণ করে যে এটি কোনও ডি পলিনাক সংখ্যা। আপনি দুটি স্বতন্ত্র মান আউটপুট করতে পারেন সত্যের জন্য এবং একটি মিথ্যের জন্য। আপনার বাইট গণনা হ্রাস করার লক্ষ্য করা উচিত।

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

ইতিবাচক ক্ষেত্রে এখানে ওইআইএস রয়েছে

1, 127, 149, 251, 331, 337, 373, 509, 599, 701, 757, 809, 877, 905, 907, 959, 977, 997, 1019, 1087, 1199, 1207, 1211, 1243, 1259, 1271, 1477, 1529, 1541, 1549, 1589, 1597, 1619, 1649, 1657, 1719, 1759, 1777, 1783, 1807, 1829, 1859, 1867, 1927, 1969, 1973, ...

এখানে কিছু নেতিবাচক কেস রয়েছে:

22, 57

আমরা কি দুটি স্বতন্ত্র ফলাফলের পরিবর্তে সত্যবাদী এবং মিথ্যা আউটপুট পেতে পারি?
Okx

@ ওকএক্স আমি না বলব
গম উইজার্ড


ত্রুটি ... negativeণাত্মক ক্ষেত্রে, এটি মূলত কোনও সংখ্যা OEIS ঠিক না? নিশ্চিত হওয়া যে আমি কোন স্পষ্ট কিছু মিস করেছি।
ম্যাজিক অক্টোপাস উরান 31:25

পুনঃটুইট
গম উইজার্ড

উত্তর:


11

জাপট , 9 14 13 বাইট

o!²mnU dj |Uv

এটি অনলাইন পরীক্ষা! বা 1000 এর অধীনে সমস্ত ডি পলিগন্যাক পূর্ণসংখ্যার সন্ধান করুন

1মিথ্যা ইনপুট এবং সত্যতার জন্য আউটপুট 0

ব্যাখ্যা

 o!²  mnU dj |Uv
Uo!p2 mnU dj |Uv  : Ungolfed
                  : Implicit: U = input integer (e.g. 9)
Uo                : Create the range [0..U), and map each item X to
  !p2             :   2 ** X.               [1, 2, 4, 8, 16, 32, 64, 128, 256]
      m           : Map each of these powers of 2 by
       nU         :   subtracting from U.   [8, 7, 5, 1, -7, -23, -57, -119, -247]
          d       : Return whether any item in the result is
           j      :   prime.                (5 and 7 are, so `true`)
             |    : Take the bitwise OR of this and
              Uv  :   U is divisble by (missing argument = 2).
                  : This gives 1 if U cannot be represented as p + 2^n or if U is even.
                  : Implicit: output result of last expression

এটি 2 & 3 এর জন্য ভুল ফলাফল দিবে বলে মনে হয়; এটি ফিরে আসছে falseতবে তারা পলিগন্যাক নম্বর নয়।
শেগি

@ শেগি 3ঠিক আছে তবে আমাদের প্রথমে এমনকি কেসগুলি পরিচালনা করতে হয়নি। স্থাপন করা.
ETH প্রোডাকশনগুলি

@ শেগি এখনই স্থির হয়েছে।
ETH প্রোডাকশনগুলি

আমি বলছিলাম যে এটি একটি ভাল জিনিসটির জন্য 3কোনও বাইটের জন্য কোনও মূল্য ব্যয় হয়নি তবে আমি 2ফিক্সটি দেখেছি - ওচ!
শেগি

: এনকোডিংয়ের ত্রুটির মতো দেখায় না এমন প্রতিযোগিতামূলক প্রোগ্রামের জন্য ও +1
ডাউনগোট

8

জেলি , 11 10 বাইট

@ ডেনিসকে 1 বাইট সংরক্ষণ করা হয়েছে

Ḷ2*³_ÆPS<Ḃ

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

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

Ḷ2*³_ÆPS<Ḃ   Main link. Argument: n (integer)
Ḷ            Lowered range; yield [0, 1, 2, ..., n-1].
 2*          Reversed exponentiation with 2; yield [1, 2, 4, ..., 2**(n-1)].
   ³_        Reversed subtraction with the input; yield [n-1, n-2, n-4, ..., n-2**(n-1)].
     ÆP      Replace each item with 1 if it is prime, 0 otherwise.
       S     Sum; yield a positive integer if any item was prime, 0 otherwise.
         Ḃ   Yield n % 2.
        <    Yield 1 if the sum is less than n % 2, 0 otherwise.
             This yields 1 if and only if the sum is 0 and n is odd.

Ḷ2*⁸_ÆPS<Ḃ একটি বাইট সংরক্ষণ করে। tio.run/##ASQA2/9qZWxsef//4bi2Mirigbhfw4ZQUzzhuIL/…
ডেনিস

@ ডেনিস ধন্যবাদ, আমি জানতাম যে এখানে একটি 3-বাইট বিকল্প থাকতে হবে ¬;ḂẠS<Ḃযদিও বক্সের বাইরে, কমপক্ষে আমার জন্য :-)
ETH প্রোডাকশন

8

জাভাস্ক্রিপ্ট (ES6),  56 54  53 বাইট

ফেরত পাঠায় 0 বা 1

f=(n,p=1,x=y=n-p)=>n>p?y%--x?f(n,p,x):x!=1&f(n,p*2):n

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

কিভাবে?

আমরা p=1 দিয়ে শুরু করি । y=np যৌগিক কিনা তা আমরা পরীক্ষা করি এবং সে অনুযায়ী বুলিয়ান উত্পন্ন হয়। পরের পরীক্ষাটি p×2 দিয়ে সঞ্চালিত হয় ।

যত তাড়াতাড়ি pn চেয়ে বড় হয় , আমরা পুনরাবৃত্তি থামিয়ে এন ফিরে n

সমস্ত পুনরাবৃত্তির ফলাফলগুলি বুলিয়ান মানগুলি 0 বা 1 তে জোর দিয়ে, একসাথে AND'd হয় ।

প্রদত্ত যে সমস্ত মধ্যবর্তী ফলাফল সত্য ছিল, আমরা একটি বিটওয়াস্ত পরীক্ষা যেমন শেষ করি:

1 & 1 & 1 & n

এই দেয় 1 যদি এবং কেবল যদি n বিজোড়, যা গত শর্ত ডি Polignac নম্বর হিসাবে ইনপুট যাচাই করা প্রয়োজন।


3
দুর্দান্ত কৌশল। সম্ভবত একমাত্র বৈধ উত্তর যা স্পষ্টভাবে বলে n%2বা অনুরূপ করে না : P
ETH প্রোডাকশন

এটি ফর্ম 2 ^ এম + 1 এর ডি পলিনাক সংখ্যার জন্য ভ্রান্ত নেতিবাচক রয়েছে, যেমন 262145 এবং 2097153 (পরবর্তীগুলি 4722366482869645213697, 38685626227668133590597633, 5192296858534827628530496329220097 ইত্যাদি)। এটি সংখ্যার বিশালতা নয় এটি একটি সমস্যা, কারণ এটি উদাহরণস্বরূপ 262139, 262259, 2097131 এবং 2097187 সঠিকভাবে সনাক্ত করে। অবশ্যই পুনরাবৃত্তির কারণে, আমাকে এটি পরীক্ষার জন্য স্ট্যাকের আকারটি খুব বিশাল কিছুতে প্রসারিত করতে হয়েছিল, এবং কেবল উপরে উল্লিখিত প্রথম দুটি 2 ^ এম + 1 ডি পলিনাক সংখ্যার চারদিকে রেঞ্জগুলি পরীক্ষা করেছিলাম।
ডেডকোড

1
@ ডেডকোড এই প্রতিবেদন করার জন্য ধন্যবাদ। এখন স্থির।
আরনাউল্ড

1
@ আর্নল্ড আহ, আপনি ঠিক বলেছেন :) ঠিক নিশ্চিত করার জন্য, আমি এটি করেছি এবং যথেষ্ট নিশ্চিত, এটি ঠিক আছে।
ডেডকোড

1
@ ডেডকোড ঝরঝরে! :)
আরনাউল্ড

7

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

f=lambda n,k=1,p=-1:k/n or(n-k&n-k-p%k>0)&n&f(n,k+1,p*k)

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


বাহ, এটি চিত্তাকর্ষকভাবে অদক্ষ। উইলসনের উপপাদ্যের মাধ্যমে প্রাইম টেস্ট । প্লাস সাইডে এটি 262145 এবং 2097153 (সীমাহীন স্ট্যাক এবং বিগনাম আকার ধরে) জন্য সঠিকভাবে কাজ করে; অন্যান্য জমা কিছু না। এটি প্রাইম অ্যালগরিদম 4 এর জন্য "সত্যবাদী" দেয়, কারণ (-6)% 4 = 2, তবে এটি কোনও সমস্যা হবেনা কারণ এমনকি সংখ্যাগুলিও দ্বারা প্রত্যাখ্যাত হয় &n&। 5 সংখ্যাটি একটি মিথ্যা নেতিবাচক হবে যদি এটি ডি পলিগনাক সংখ্যা হয়, কারণ 1 + 4 = 5, তবে যাইহোক 2 + 3 = 5 হওয়ায় এটি কোনও সমস্যা নয়।
ডেডকোড

7

জেলি , 10 বাইট

ইতিমধ্যে পোস্ট করা একটিতে বিকল্প 10 বাইট জেলি জমা দেওয়া।

_ÆRBS€’×ḂẠ

ডি পলিগন্যাক সংখ্যার জন্য 1 এবং অন্যথায় 0 তে ফিরে আসা একটি মোনাডিক লিঙ্ক ।

এটি অনলাইন চেষ্টা করুন! অথবা 1000 এর নীচে যারা দেখুন।

কিভাবে?

_ÆRBS€’×ḂẠ - Link: number, n  e.g.  1    3      5                  6                   127
 ÆR        - prime range            []   [2]    [2,3,5]            [2,3,5]             [2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127]
_          - subtract from n        []   [1]    [3,2,0]            [4,3,1]             [125,124,122,120,116,114,110,108,104,98,96,90,86,84,80,74,68,66,60,56,54,48,44,38,30,26,24,20,18,14,0]
   B       - convert to binary      []   [[1]]  [[1,1],[1,0],[0]]  [[1,0,0],[1,1],[1]  [[1,1,1,1,1,0,1],[1,1,1,1,1,0,0],[1,1,1,1,0,1,0],[1,1,1,1,0,0,0],[1,1,1,0,1,0,0],[1,1,1,0,0,1,0],[1,1,0,1,1,1,0],[1,1,0,1,1,0,0],[1,1,0,1,0,0,0],[1,1,0,0,0,1,0],[1,1,0,0,0,0,0],[1,0,1,1,0,1,0],[1,0,1,0,1,1,0],[1,0,1,0,1,0,0],[1,0,1,0,0,0,0],[1,0,0,1,0,1,0],[1,0,0,0,1,0,0],[1,0,0,0,0,1,0],[1,1,1,1,0,0],[1,1,1,0,0,0],[1,1,0,1,1,0],[1,1,0,0,0,0],[1,0,1,1,0,0],[1,0,0,1,1,0],[1,1,1,1,0],[1,1,0,1,0],[1,1,0,0,0],[1,0,1,0,0],[1,0,0,1,0],[1,1,1,0],0]
    S€     - sum €ach               []   [1]    [2,1,0]            [1,2,1]             [6,5,5,4,4,4,5,4,3,3,2,4,4,3,2,3,2,2,4,3,4,2,3,3,4,3,2,2,2,3,0]
      ’    - decrement              []   [0]    [1,0,-1]           [0,1,0]             [5,4,4,3,3,3,4,3,2,2,1,3,3,2,1,2,1,1,3,2,3,1,2,2,3,2,1,1,1,2,-1]
        Ḃ  - n mod 2                1    1      1                  0                   1
       ×   - multiply               []   [0]    [1,0,-1]           [0,0,0]             [5,4,4,3,3,3,4,3,2,2,1,3,3,2,1,2,1,1,3,2,3,1,2,2,3,2,1,1,1,2,-1]
         Ạ - all truthy?            1    0      0                  0                   1

এটি কীভাবে কাজ করে তা বুঝতে আমাকে 10 মিনিট সময় নিয়েছে ... দুর্দান্ত কৌশল, আমি অ্যারেতে দুটি :-) এর কোনও ক্ষমতা নেই কিনা তা যাচাই করার ভাল
উপায়ের কথা ভাবতে পারি না


6

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

lambda n:n&1-any(n-2**k>1and all((n-2**k)%j for j in range(2,n-2**k))for k in range(len(bin(n))-2))

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

লিকি নুনকে ধন্যবাদ -4 বাইট

-২ বাইটস ওয়ান্ডারক্রিকেটকে ধন্যবাদ

একটি ভুল ঠিক করতে +8 বাইট

-১ বাইট মিঃ এক্সকোডারকে ধন্যবাদ

আইকর্ন এনচান্টারকে ধন্যবাদ -3 বাইটস

একটি ভুল ঠিক করতে +12 বাইট tes


আমি মনে করি এটি একটি পাইথন 3 সামঞ্জস্যপূর্ণ উত্তর?
এরি কুপার-ডেভিস

এটির জন্য ফর্ম 2 ^ এম + 1 এর সমস্ত ডি পলিগনাক সংখ্যার জন্য 1 এবং এর জন্য একটি মিথ্যা নেতিবাচক রয়েছে, যেমন 262145 এবং 2097153 (পরবর্তীগুলি 4722366482869645213697, 38685626227668133590597633, 5192296858534827628530496329220097 ইত্যাদি)) এটি সংখ্যার বিশালতা নয় এটি একটি সমস্যা, কারণ এটি উদাহরণস্বরূপ 262139, 262259, 2097131 এবং 2097187 সঠিকভাবে সনাক্ত করে।
ডেডকোড

1
"প্রাইম" 1 টি নয় তা নিশ্চিত করার জন্য @ ডেডকোড স্পষ্ট চেক করুন; এখনই কাজ করা উচিত
হাইপার নিউট্রিনো

6

রেজেক্স (ইসিএমএসক্রিপ্ট), 97 বাইট

অ-পারমাণবিক চেহারা না থাকা সমস্যাটি সমাধান করার জন্য এই সমস্যাটি কাজ করার জন্য একটি আকর্ষণীয় মামলা তৈরি করেছে। এবং এখন পর্যন্ত এটিই একমাত্র সময় যে আমি দুটি পরীক্ষার শক্তির উভয় সংস্করণ ((x+)(?=\2$))*x$এবং (?!(x(xx)+)\1*$)একই রেজেজেসে রাখার ভাল কারণ পেয়েছি এবং এখন পর্যন্ত একমাত্র সময়টি ম্যাচিংয়ের বিরুদ্ধে মূল পরীক্ষাকে রক্ষা করার জন্য আমার প্রয়োজন ছিল 1, হিসাবে (?!(xx+)\1+$)xx, যখন বৃহত্তর রেজেক্সে ব্যবহৃত হয়।

^(?!(xx)*$|(x+)((?!(xx+)\4+$).*(?=\2$)((x+)(?=\6$))*x$|(?!(x(xx)+)\7*$).*(?=\2$)(?!(xx+)\9+$)xx))

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

# For the purposes of these comments, the input number = N.
^
# Assert that N is not the sum of a prime number and a power of 2.
(?!
    (xx)*$                 # Assert that N is odd.
|
    # Since we must cycle through all values for a number X and a corresponding number
    # N-X, this cannot be in an atomic lookahead. The problem then becomes that it
    # consumes characters. Thus we must let X be the larger of the two and N-X be the
    # smaller, and do tests on X followed by tests on N-X. We can't just test X for
    # being prime and N-X for being a power of 2, nor vice versa, because either one
    # could be smaller or larger. Thus, we must test X for being either prime or a
    # power of 2, and if it matches as being one of those two, do the opposite test on
    # N-X.
    # Note that the prime test used below, of the form (?!(xx+)\2+$), has a false match
    # for 0 and 1 being prime. The 0 match is harmless for our purposes, because it
    # will only result in a match for N being a power of 2 itself, thus rejecting
    # powers of 2 as being de Polignac numbers, but since we already require that N is
    # odd, we're already rejecting powers of 2 implicitly. However, the 1 match would
    # break the robustness of this test. There can be de Polignac numbers of the form
    # 2^M+1, for example 262145 and 2097153. So we must discard the 1 match by changing
    # the prime test to "(?!(xx+)\2+$)xx". We only need to do this on the N-X test,
    # though, because as X is the larger number, it is already guaranteed not to be 1.
    (x+)           # \2 = N-X = Smaller number to test for being prime or a power of 2;
                   # tail = X = larger number to test for being prime or a power of 2.
    (
        (?!(xx+)\4+$)      # Test X for being prime.
        .*(?=\2$)          # tail = N-X
        ((x+)(?=\6$))*x$   # Test N-X for being a power of 2. Use the positive version
                           # since it's faster and doesn't have a false match of 0.
    |
        (?!(x(xx)+)\7*$)   # Test X for being a power of 2. Use the negative version
                           # because the testing of X has to be in a lookahead, and
                           # putting the positive version in a positive lookahead would
                           # be worse golf. It doesn't matter that this can have a false
                           # match of 0, because X is guaranteed never to be 0.
        .*(?=\2$)          # tail = N-X
        (?!(xx+)\9+$)xx    # Test N-X for being prime. We must prevent a false match of
                           # 1 for the reason described above.
    )
)

রেজেক্স (ECMAScript + আণবিক চেহারা), 53 52 বাইট

^(?!(xx)*$|(?*xx+(((x+)(?=\4$))*x$))\2(?!(xx+)\5+$))

# For the purposes of these comments, the input number = N.
^
# Assert that N is not the sum of a prime number and a power of 2.
(?!
    (xx)*$                   # Assert that N is odd.
|
    (?*
        xx+                  # Force N - \2 to be > 1, because the prime test used
                             # below has a false match of 1, which would otherwise
                             # give us false negatives on de Polignac numbers of the
                             # form 2^M+1, such as 262145 and 2097153.
        (((x+)(?=\4$))*x$)   # Cycle through subtracting all possible powers of 2 from
                             # tail, so we can then test {N - {power of 2}} for being
                             # prime.
                             # \2 = the power of 2
    )
    \2                       # tail = N - \2
    (?!(xx+)\5+$)            # Test tail for being prime. If it matches, this will fail
                             # the outside negative lookahead, showing that N is not a
                             # de Polignac number.
)

এই সংস্করণটি কেবল খুব পরিষ্কার নয়, বরং আরও দ্রুত, কারণ এন দুটি সংখ্যার যোগফল হিসাবে সমস্ত সম্ভাব্য উপায়ে চক্র চালানোর পরিবর্তে এটি কেবল 2 থেকে 2 এর পাওয়ারকে বিয়োগ করে চক্র করতে পারে এবং প্রধান হওয়ার জন্য পার্থক্যটি পরীক্ষা করতে পারে ।

আণবিক চেহারাটি সহজেই পরিবর্তনশীল-দৈর্ঘ্যের বর্ণমহলে রূপান্তরিত হতে পারে:

রেজেক্স (। নেট বা ইসমাএসক্রিপ্ট 2018), 55 54 বাইট

^(?!(xx)*$|xx+(((x+)(?=\4$))*x$)(?<=(?<!^\5+(x+x))\2))

এটি অনলাইন চেষ্টা করুন! (। নেট)
এটি অনলাইনে চেষ্টা করুন! (ECMAScript 2018)

# For the purposes of these comments, the input number = N.
^
# Assert that N is not the sum of a prime number and a power of 2.
(?!
    (xx)*$                 # Assert that N is odd.
|
    xx+                    # Force N - \2 to be > 1, because the prime test used
                           # below has a false match of 1, which would otherwise
                           # give us false negatives on de Polignac numbers of the
                           # form 2^M+1, such as 262145 and 2097153.
    (((x+)(?=\4$))*x$)     # Cycle through subtracting all possible powers of 2 from
                           # tail, so we can then test {N - {power of 2}} for being
                           # prime.
                           # \2 = the power of 2
    (?<=
        (?<!^\5+(x+x))     # Test tail for being prime. If it matches, this will fail
                           # the outside negative lookahead, showing that N is not a
                           # de Polignac number.
        \2                 # tail = N - \2
    )
)

আপনার রেজেক্স ^(?!(x+)((?!(xx+)\3+$)x*(?!(x(xx)+)\4*$)|x(?!(x(xx)+)\6*$)x*(?!(xx+)\8+$)x)?\1$)খুব বেশি অসুবিধা ছাড়াই অনুকূলিত হতে পারে । তারপরে, কিছু সাবধানতার সাথে চিন্তা করে আরও গল্ফ করা যেতে পারে ^(?!(x+)((x?)(?!(x(x\3)+)\4+$)x*(?!(x(xx)+|\3\3+)\6+$)\3)?\1$)। আরও ছোট হতে পারে
এইচ.পি.উইজ

আমার সংক্ষিপ্ততমটি খুব ধীরে, যদিও
এইচপিউইজ

ওহ, (x(xx)+|\3\3+)->(x\3?(xx)+)
এইচ.পি.উইজ

4

গণিত, 41 বাইট

OddQ@#&&!Or@@PrimeQ[#-2^Range[0,Log2@#]]&

1
এই জন্য কোন অন্তর্নির্মিত আছে? বাহ, আমি অবাক।
হাইপারনিউটারিনো

1
এটা খুবই বিরক্তিকর এখানে ম্যাথামেটিকাল নেতিবাচক মৌলিক deems প্রধানমন্ত্রী হতে অথবা তোমরা প্রতিস্থাপন বাইট বাঁচাতে পারে এর PrimeQ[#-2^Range[0,Log2@#]]সঙ্গে PrimeQ[#-2^Range[0,#]]এবং তারপর PrimeQ[#-2^Range@#/2]
গ্রেগ মার্টিন

4

পিএইচপি , 75 বাইট

সত্যবাদিতার জন্য 1 এবং মিথ্যাচারের জন্য 0 টি মুদ্রণ করে

for($t=1&$argn;0<$d=$n=$argn-2**$i++;$d-1?:$t&=0)for(;--$d&&$n%$d;);echo$t;

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

এটি অনলাইন চেষ্টা করুন! পলিগনাক ইন্টিজার্স 10000 এর নিচে



4

Brachylog , 15 13 বাইট

/₂ℕ|>ṗ;?-₍ḃ+1

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

1000 পর্যন্ত আউটপুট ডি পলিনাক সংখ্যাগুলি।

false.ডি পলিগনাক সংখ্যার জন্য এবং true.অন্যথায় ফেরত দেয় ।

@ বাগিচুনের মুছে ফেলা উত্তরের উপর ভিত্তি করে কয়েকটি বাগফিক্স (তাদের অনুমতি সহ পোস্ট করা হয়েছে)।

(-২ বাইটগুলি @ জোনাথন অ্যালান পদ্ধতিটি ব্যবহার করে সংখ্যাটি দুটির শক্তির কিনা তা পরীক্ষা করে দেখুন))

প্রদত্ত নম্বরটি কোনও ডি পলিগনাক নম্বর নয় যদি:

/₂ℕ              It's an even number
   |>ṗ           Or there exists a prime number less than the input
      ;?-₍       which when subtracted from the input
          ḃ      gives a result that has a binary form
           +     such that the sum of the bits 
            1    is 1

=h21 বাইট ছোট হবে তবে এটি কোনওটির জন্যই কাজ করে না 3
আগস্টকে মারাত্মক করুন

স্বতঃ (নন মোবাইল) নোট করুন : 14 বাইট এটি অনলাইনে চেষ্টা করুন! । জোনাথন অ্যালান এর জেলি উত্তর দ্বারা অনুপ্রাণিত।
- মনিকা


আমি মনে করি আপনার নোটগুলির জন্য অনুস্মারক?
ক্রপবেব

1
@ ডেডকোড এটি পোস্ট করার সময় এটি কাজ করত, এবং বিভাজন সম্পর্কে কিছু মনে হয়েছে এরই মধ্যে পরিবর্তিত হয়েছে - যেমন। এটি অনলাইন চেষ্টা করুন! 64৪ এর পরিবর্তে মিথ্যা প্রত্যাবর্তন করে commit ভাষায় এই প্রতিশ্রুতি থেকে পরিবর্তনটি সম্ভবত এসেছে , তবে আমি এখানে কিছুক্ষণের জন্য সক্রিয় ছিলাম না, তাই জানেন না এটি উদ্দেশ্যমূলক বা কোনও বাগ।
- মনিকা পুনরায় ইনস্টল করুন

3

জেলি , 13 বাইট

ÆRạl2=Ḟ$o/o‘Ḃ

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

ÆRạl2=Ḟ$o/     Main link; argument is z
ÆR             Generate all primes in the range [2..z]
  ạ            Absolute difference with z for each prime
   l2          Logarithm Base 2
     =Ḟ$       For each one, check if it's equal to its floored value (i.e. if it is an integer)
        o/     Reduce by Logical OR to check if any prime plus a power of two equals the z
          o‘Ḃ  Or it's not an odd number. If it's not an odd number, then automatically return 1 (false).

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


Ḷ2*ạfÆRṆতারপরে
সমতাটি দেখুন

@LeakyNun Ḷ2*ạfÆRṆo‘Ḃ1 উভয়ের জন্য ফিরে আসে 127এবং 22; এটা ঠিক না যদি না আপনি যা পরামর্শ দেন তা না হয়।
হাইপারনিউটারিনো

আপনি ব্যবহার করতে হবে এবং, না বা। (বা আপনি আমার শেষ অবজ্ঞা সরাতে পারেন এবং 9-10 বাইটে এটি করতে এগিয়ে যেতে পারেন)
লিকি নুন

@ ল্যাকইনুন আপনার স্নিপেটটি 0149 এর জন্য দেয়
ETH প্রোডাকশন

পছন্দ করুন এটি ঠিক করতে পরিবর্তন করা হচ্ছে _@
ফাঁস নুন

2

পার্ল 6 , 55 বাইট

{so$_%2&&$_∉((1,2,4...*>$_) [X+] grep &is-prime,^$_)}

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

  • (1, 2, 4 ... * > $_) ইনপুট আর্গুমেন্ট না হওয়া পর্যন্ত দুটি শক্তির ক্রম হয় (পার্ল প্রদত্ত উপাদানগুলির থেকে জ্যামিতিক সিরিজটি অনুমান করে)।
  • grep &is-prime, ^$_ ইনপুট যুক্তি পর্যন্ত প্রধান সংখ্যাগুলির তালিকা।
  • [X+] দুটি সিরিজের ক্রস প্রোডাক্টের সমস্ত উপাদানের যোগফলকে মূল্যায়ন করে।

আমি soদুটি বাইট কম না করে করতে পারতাম , তবে তারপরে এটি দুটি স্বতন্ত্র মিথ্যা মান ( 0এবং False) প্রদান করে।


2

অ্যাক্সিয়াম, 86 বাইট

f(n:PI):Boolean==(~odd?(n)=>false;d:=1;repeat(n<=d or prime?(n-d)=>break;d:=d*2);n<=d)

পরীক্ষা এবং ফলাফল

(21) -> for i in 1..600 repeat if f(i) then output i
   1
   127
   149
   251
   331
   337
   373
   509
   599

2

হাস্কেল, 104 102 বাইট

p x=[x]==[i|i<-[2..x],x`mod`i<1]
h k|even k=1>2|2>1=notElem k$((+)<$>(2^)<$>[0..k])<*>filter(p)[1..k]

ব্যাখ্যা

  • পি একটি ফাংশন যা মূল সংখ্যাগুলি খুঁজে পায় (খুব অদক্ষ!)
  • একটি তালিকা তৈরি করা হচ্ছে (+)2 ^ আংশিক ক্রিয়াকলাপে প্রয়োগের জন্য প্রয়োগ করা হয় [0..input]
  • প্রাইমগুলির জন্য ইনপুটটিতে ফিল্টার করা 1 তালিকায় উপরের প্রয়োগ করা
  • কারটিশিয়ান পণ্যতে ইনপুটটির অস্তিত্ব নেই তা নিশ্চিত করতে প্রতিটি সম্ভাব্য মানের কার্টেসিয়ান পণ্যটির ফলাফল অনুসন্ধান করা হয়
  • একটি এমনকি ইনপুট স্বয়ংক্রিয়ভাবে মিথ্যা কিনা তা নিশ্চিত হয়ে রক্ষিত।

আপডেট: দুটি বাইট গল্ফ করার জন্য আইনকর্ন এনচ্যান্টারে চিৎকার করুন!


1
p x=[x]==[i|i<-[2..x],x`mod`i<1]একটি সংক্ষিপ্ত প্রাথমিকতা পরীক্ষা।
গম উইজার্ড

পছন্দ করুন আপনি আমাকে দুটি বাইট গল্ফ করেছেন!
ম্যাপেল_শ্যাফ্ট

1
আপনি এর filter p[1..k]পরিবর্তেও করতে পারেনfilter(p)[1..k]
গম উইজার্ড

1

কমন লিস্প, 134 বাইট

(lambda(x)(flet((p(x)(loop for i from 2 below x always(>(mod x i)0))))(or(evenp x)(do((j 1(* j 2))(m()(p(- x j))))((or(>= j x)m)m)))))

অন্যথায় NIL, যখন আর্গুমেন্টটি পলিগনাক সংখ্যা হয় তখন ফিরে আসুন T

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

Ungolfed:

(lambda (n)
  (flet ((prime? (x)                 ; x is prime
           loop for i from 2 below x ; if for i in [2..n-1]
           always (> (mod x i) 0)))  ; is x is not divisible by i
    (or (evenp n)                    ; if n is even is not a Polignac number
        (do ((j 1( * j 2))           ; loop with j = 2^i, i = 0, 1,... 
             (m () (prime? (- n j)))); m = n - 2^i is prime?
            ((or (>= j n)            ; terminate if 2^i ≥ n
                 m)                  ; or if n - 2^i is prime
             m)))))                  ; not a polignac if n - 2^i is prime

1

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

2∘|⍲0⍭⊢-2*…

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

নামবিহীন উপসর্গ tacit ফাংশন। সত্যের জন্য 1 প্রদান করে, মিথ্যা বলার জন্য 0 দেয়।

মূলত ETHProductions এর জ্যাপ উত্তরের উপর ভিত্তি করে ।

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

কিভাবে:

2∘|⍲0⍭⊢-2*…    Tacit prefix function; input will be called 
                Inclusive Range [0..⍵]
         2*      2 to the power of each number in the range
       ⊢-        Subtract each from 
     0          Non-primality check on each resulting number
                Logical NAND
 2∘|             Mod 2
                Not any (bitwise OR reduction, then negated)




0

এপিএল (এনএআরএস) 80 টি চর, 160 বাইট

∇r←f w;n
r←¯1⋄→0×⍳(w≤0)∨w≥9E9⋄r←0⋄→0×⍳0=2∣w⋄n←r←1
→0×⍳w≤n⋄→3×⍳0πw-n⋄n×←2⋄→2
r←0
∇

0π ফাংশনটি এমন ফাংশন যা তার যুক্তিটি প্রধান বা না তা ফিরিয়ে দেয়। আমার জন্য এই ফাংশনটি পুনরাবৃত্ত হয় নি তাই এটি আরও বেশি দীর্ঘ ... পরীক্ষা:

  {1=f ⍵:⍵⋄⍬}¨1..1000
1  127  149  251  331  337  373  509  599  701  757  809  877  905  907  959  977  997 

ইনপুটটির জন্য <= 0 বা ইনপুট> = 9E9 এটি ¯1 ফেরায় (ত্রুটি)

  f¨0 ¯1 ¯2 900000000001
¯1 ¯1 ¯1 ¯1 

0

সি # (ভিজ্যুয়াল সি # ইন্টারেক্টিভ সংকলক) , 107 বাইট

x=>{var r=Enumerable.Range(2,x);return x%2>0&r.All(p=>r.Any(d=>d<p&p%d<1)|r.All(n=>x!=p+Math.Pow(2,n-2)));}

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

সর্বাধিক দক্ষ কোড নয়, তবে এটি কাজ করে বলে মনে হচ্ছে। আমার মূল সমাধানটি সূত্রে পরীক্ষার আগে প্রাইমদের জন্য ফিল্টার করা হয়েছিল এবং এটি আরও ভাল সম্পাদন করেছে। বর্তমান সংস্করণটি 11 বাইট সংক্ষিপ্ত।

// input x is an integer
x=>{
  // we need to generate several
  // ranges. since this is verbose,
  // generate 1 and keep a reference
  var r=Enumerable.Range(2,x);
  // this is the main condition
  return
     // input must be odd
     x%2>0&
     // generate all possible p's
     // over our range and ensure that
     // they satisfy the following
     r.All(p=>
       // either p is not prime
       r.Any(d=>d<p&p%d<1)
       |
       // or there is no n that satisfies
       // the formula: x=p+2^n
       r.All(n=>x!=p+Math.Pow(2,n-2))
     );
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.