আমার কি প্রথম যমজ আছে?


23

একটি পূর্ণসংখ্যা যদি প্রধান হয় তবে কেবলমাত্র এটি ইতিবাচক এবং ঠিক 2 স্বতন্ত্র বিভাজন রয়েছে: 1 এবং নিজেই। একটি যমজ প্রাইম জোড়া দুটি উপাদান দিয়ে তৈরি: pএবং p±2, এটি উভয়ই প্রধান।

ইনপুট হিসাবে আপনাকে ইতিবাচক পূর্ণসংখ্যা দেওয়া হবে। আপনার কাজটি হ'ল মান নিয়মগুলি (মানগুলি সামঞ্জস্যপূর্ণ হওয়া দরকার) অনুসরণ করে প্রদত্ত পূর্ণসংখ্যা দুটি যুগল জুটির অন্তর্ভুক্ত কিনা তার উপর নির্ভর করে সত্যতা / মিথ্যা ফিরিয়ে দেওয়া return

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

  • সত্যবাদী (দ্বিগুণ পুরস্কার): 3, 5, 7, 11, 13, 17, 19, 29, 31, 41, 43

  • মিথ্যা (যমজ প্রাইম নয়): 2, 15, 20, 23, 37, 47, 97, 120, 566

এটি , তাই বাইটের মধ্যে সংক্ষিপ্ততম কোডটি জয়ী!


13 জন প্রধান যমজ?
লিফডে ওয়েইন

@ লিফডেভেন হ্যাঁ, কারণ এটি জুটির (11, 13)
দানিরো

উত্তর:


18

ব্র্যাচল্যাগ , 9 8 বাইট

ṗ∧4√;?+ṗ

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

ব্যাখ্যা

ṗ           Input is prime
 ∧          And
  4√        A number whose square is 4 (i.e. -2 or 2)
    ;?+     That number + the Input…
       ṗ    …is prime

2
জেলিকে মারধর এবং 05AB1E বেঁধে রাখা, দুর্দান্ত
স্টিফেন

3
চালাক ব্যবহার! +1
এরিক দি আউটগল্ফার

11

জেলি , 10 9 বাইট

%6+_2_ÆP⁺

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

পটভূমি

ব্যতীত (3, 5) , সমস্ত যমজ মৌলিক জোড়া ফর্মের হয় (- 1, 6k + 1 টি 6k)

যেহেতু (6 কে - 1) + (6 কে - 1)% 6 - 3 = 6 কে - 1 + 5 - 3 = 6 কে + 1 এবং
(6 কে + 1) + (6 কে + 1)% 6 - 3 = 6 কে + 1 + 1 - 3 = 6 কে - 1 , একটি ইনপুট n> 3 দেওয়া , এটি এন এবং এন + এন% 6 - 3 উভয়ই প্রাইম কিনা তা খতিয়ে দেখার পক্ষে যথেষ্ট ।

এই সূত্র ঘটবে জন্য কাজ এন = 3 পাশাপাশি, যেমন 3 + + 3% 6 - 3 = 3 মৌলিক এবং 3 একটি যমজ মৌলিক নয়।

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

%6+_2_ÆP⁺  Main link. Argument: n

%6         Compute n%6.
  +        Add n to the result.
   _2      Subtract 2.
     _ÆP   Subtract 1 if n is prime, 0 if not.
           If n is not a prime, since (n + n%6 - 2) is always even, this can only
           yield a prime if (n + n%6 - 2 = 2), which happens only when n = 2.
        ⁺  Call ÆP again, testing the result for primality.

7

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

lambda n:sum((n+n%6-3)*n%k<1for k in range(2,4*n))==2

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

পটভূমি

সমস্ত পূর্ণসংখ্যার কে : 6 কে - 3 , 6 কে - 2 , 6 কে - 1 , 6 কে , 6 কে + 1 , 6 কে + 2 সহ নীচের একটি রূপ গ্রহণ করে

যেহেতু 6k - 2 , 6k এবং 6k +2 সবাই এমনকি এবং যেহেতু 3 - 6k দিয়ে বিভাজ্য 3 ছাড়া সমস্ত মৌলিক, 2 এবং 3 ফর্ম হওয়া আবশ্যক 6k - 1 বা 6k + 1 টি । যেহেতু একটি দ্বিগুণ প্রাইম জুটির পার্থক্য 2 , (3, 5) ব্যতীত , সমস্ত যমজ প্রধান জোড়া ফর্মের (6 কে - 1, 6 কে + 1) হয়

যাক এন রুপে হওয়া 6k ± 1

  • যদি এন = 6 কে -1 হয় , তবে এন + এন% 6 - 3 = 6 কে - 1 + (6 কে - 1)% 6 - 3 = 6 কে - 1 + 5 - 3 = 6 কে + 1

  • যদি এন = 6 কে + 1 হয় , তবে এন + এন% 6 - 3 = 6 কে + 1 + (6 কে + 1)% 6 - 3 = 6 কে + 1 + 1 - 3 = 6 কে - 1

সুতরাং, n যদি একটি যমজ জোড়া এবং n ≠ 3 এর অংশ হয় তবে এটি যমজ হবে n + n% 6 - 3

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

পাইথনের একটি অন্তর্নির্মিত প্রাথমিক পরীক্ষা নেই। প্রাথমিকের জন্য একটি একক সংখ্যা পরীক্ষা করার জন্য শর্ট-ইশ উপায় রয়েছে, তবে দুটি সংখ্যার জন্য এটি করা দীর্ঘতর হবে। পরিবর্তে আমরা বিভাজনকারীদের সাথে কাজ করতে যাচ্ছি।

sum((n+n%6-3)*n%k<1for k in range(2,4*n))

কতটি পূর্ণসংখ্যার ব্যবধান [2, 4n) ডিভাইড (ঢ + N% 6 - 3) এন সমানভাবে, অর্থাত্, এটি ভাজক সংখ্যা, মোট ছাত্র (ঢ + N% 6 - 3) এন ব্যবধান [2 , 4 এন) । আমরা দাবি করি যে এই গণনাটি 2 যদি হয় এবং কেবল n যদি দুটি যমজ জুটির অংশ হয়।

  • যদি এন = 3 (একটি যমজ প্রাইম), (এন + এন% 6 - 3) এন = 3 (3 + 3 - 3) = 9 এর [2, 12) এ দুটি বিভাজক ( 3 এবং 9 ) থাকে ।

  • যদি n> 3 টি যমজ প্রধান হয়, যেমনটি আগে দেখা গেছে, m: = n + n% 6 - 3 এর যমজ। এই ক্ষেত্রে, এমএন এর ঠিক চারটি বিভাজন রয়েছে: 1, মি, এন, এমএন

    যেহেতু এন> 3 , আমরা মি> 4 তাই হয়, 4n <MN এবং ঠিক দুই ভাজক ( মি এবং এন ব্যবধান মধ্যে) পতনের [2, 4n)

  • যদি এন = 1 হয় , তবে (এন + এন% 6 - 3) এন = 1 + 1 - 3 = -1 এর [2, 4) তে কোনও বিভাজক নেই ।

  • যদি এন = 2 , তবে (এন + এন% 6 - 3) এন = 2 (2 + 2 - 3) = 2 এর [2, 8) তে একটি বিভাজক (নিজেই) রয়েছে ।

  • যদি এন = 4 হয় , তবে (এন + এন% 6 - 3) এন = 4 (4 + 4 - 3) = 20 [2, 16) এ চারটি বিভাজক ( 2 , 4 , 5 , এবং 10 ) রয়েছে ।

  • তাহলে এন> 4 এমনকি হয় 2 , এন / 2 , এবং এন সব ডিভাইড এন এবং, অতএব, N - (3 এন + N% 6) । আমাদের এন <4 থেকে </ 2> 2 রয়েছে , সুতরাং [2, 4 এন) এ কমপক্ষে তিনটি বিভাজন রয়েছে ।

  • যদি এন = 9 হয় , তবে (এন + এন% 6 - 3) এন = 9 (9 + 3 - 3) = 81 এর [2, 36) এ তিনটি বিভাজক ( 3 , 9 , এবং 21 ) রয়েছে ।

  • তাহলে এন> 9 এর গুণিতক হয় 3 , তারপর 3 , এন / 3 , এবং এন সব ডিভাইড এন , এবং, অতএব N - (3% 6, n + ঢ) । আমরা আশা করি আপনি এন / 3> 3 থেকে এন> 9 , তাই অন্তত তিনটি ভাজক আছে [2, 4n)

  • অবশেষে, যদি এন = 6 কে ± 1> 4 টি যমজ প্রাইম না হয়, তবে n বা m: = n + n% 6 - 3 অবশ্যই সংমিশ্রিত হওয়া উচিত এবং অতএব, একটি উপযুক্ত বিভাজক ডি> 1 স্বীকার করুন ।

    যেহেতু n = m + 2 বা m = n + 2 এবং n, m> 4 , পূর্ণসংখ্যা d , m এবং n এমএন এর পৃথক বিভাজক । তদ্ব্যতীত, M <, n + 3 <4n যেহেতু এন> 1 , তাই MN মধ্যে অন্তত তিনটি ভাজক আছে [2, 4n)


কি দারুন. এই জাতীয় সংক্ষিপ্ত কোড এবং এখনও অনেক বিশেষ ক্ষেত্রে এটি অবশ্যই সঠিকভাবে পরিচালনা করবে। পাইথন 3 বলার কোনও কারণ? যতদূর আমি বলতে পারো এটা 2. পাইথন কাজ করে
kasperd

হ্যাঁ, এটি পাইথন 2 তেও কাজ করবে The 3 টিটিও থেকে স্বতঃ উত্পাদিত এসই পোস্টের অংশ।
ডেনিস

5

05 এ বি 1 ই , 10 9 বাইট

ডেটাবোইকে ধন্যবাদ 1 বাইট সংরক্ষিত

ÌIÍ‚pZIp*

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

ব্যাখ্যা

Ì           # push input+2
 IÍ         # push input-2
   ‚        # pair
    p       # isPrime
     Z      # max
      Ip    # push isPrime(input)
        *   # multiply

1
-1 বাইটের ÌIÍ‚পরিবর্তে ব্যবহার করুন40SÍ+
ডেটাবোই

4

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

<?=($p=gmp_prob_prime)($n=$argn)&&$p($n+2)|$p($n-2);

জিএমপি ব্যতীত, 84 বাইট

( স্ট্যাক ওভারফ্লো থেকে আমার প্রধান ফাংশন ব্যবহার করে )

<?=p($n=$argn)&&p(2+$n)|p($n-2);function p($n){for($i=$n;--$i&&$n%$i;);return$i==1;}

পাইপ হিসাবে চালান -nF। Falsy জন্য খালি আউটপুট, 1truthy জন্য।

ডেনিসের দুর্দান্ত সমাধান পিএইচপি, 56 বাইটে পোর্ট করা হয়েছে

while($i++<4*$n=$argn)($n+$n%6-3)*$n%$i?:$s++;echo$s==3;

পাইপ হিসাবে চালনা করুন-nR বা এটি অনলাইনে চেষ্টা করুন



3

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

HOht_v+ZpAa

আউটপুট হয় 0বা 1

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

ব্যাখ্যা

H    % Push 2
O    % Push 0
h    % Concatenate horizontally: gives [2 0]
t_   % Push a negated copy: [-2 0]
v    % Concatenate vertically: [2 0; -2 0]
+    % Add to implicit input
Zp   % Isprime
A    % All: true for columns that only contain nonzeros
a    % Any: true if there is at least a nonzero. Implicit display

3

পাইথ , 14 12 11 বাইট

&P_QP-3+%Q6

পরীক্ষা স্যুট.


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


পাইথ , 14 বাইট * প্রাথমিক সমাধান

&|P_ttQP_hhQP_

পরীক্ষা স্যুট.


2

রেটিনা , 45 44 বাইট

.*
$*
11(1+)
$1¶$&¶11$&
m`^(11+)\1+$

1<`1¶1

অন্যথায় 0 ইনপুটটি যদি একটি টুইন প্রাইম হয় তবে 1 প্রদান করে

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

ব্যাখ্যা

.*              
$*

ইউনারি তে রূপান্তর করুন

11(1+)          
$1¶$&¶11$&

তাদের নিজস্ব লাইনে n-2, n এবং n + 2 রাখুন

m`^(11+)\1+$   

(ট্রেলিং নিউলাইন) 1 এর চেয়ে বেশি সমস্ত কমপোজাইট সরান

1<`1¶1          

টানা দুটি প্রাইম রয়েছে কিনা তা পরীক্ষা করুন (বা 1,3 কারণ 3 টি যমজ প্রাইম)


2

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

?(*+(0&(-2|2))).is-prime

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

*এই বেনামে ফাংশনের যুক্তি। 0 & (-2 | 2)সংখ্যার 0সমন্বয়যুক্ত জংশন এবং হয় -2OR 2*এই সংযোগে যুক্ত করা সংখ্যার সংযোগ *এবং উভয়ই সংখ্যার * - 2OR তৈরি করে * + 2। কল করা হচ্ছে is-primeএই মোড় উপর পদ্ধতি truthy মান যদি *প্রধানমন্ত্রী হয় এবং পারেন * - 2বা * + 2মৌলিক হয়। অবশেষে, ?ধারাবাহিক-ফেরত-মানগুলির শর্তটি সন্তুষ্ট করে, সত্যিকারের জংশনটি বুলিয়ান মানে ভেঙে যায়।


2

জাভাস্ক্রিপ্ট, 91 বাইট , 81 বাইট জারেড স্মিথ ধন্যবাদ

p=n=>{for(i=2;i<n;)if(n%i++==0)return !!0;return n>1},t=n=>p(n)&&(p(n+2)||p(n-2))

ব্যাখ্যা

pবলে খাসি প্রদত্ত সংখ্যার nমৌলিক কি না, এবং tপরীক্ষার নম্বর দেওয়া nএবং n±2

উদাহরণ


ফাংশন সংজ্ঞা ইত্যাদির varচারপাশে আপনার প্রথম বন্ধনীগুলির দরকার নেইn
জারেড স্মিথ

আমি মনে করি আপনি বর্ধিত স্বচ্ছতার জন্য nমূল্য t(n)(উদা। 7: true) এর পাশের মানটি দেখানোর জন্য আপনার স্নিপেট সম্পাদনা করতে পারবেন
টেলর স্কট

1
আপনার উভয়ের জন্য
সার্জ কে।

1

জে, 23 বাইট

1&p:*.0<+/@(1 p:_2 2+])

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

কীভাবে?

1&p:                               is the arg a prime?
    *.                             boolean and
                                   one of +2 or -2 also a prime
                     (1 p:_2 2+])  length 2 list of booleans indicating if -2 and +2 are primes
               @                   pipe the result into...
      0<+/                         is the sum of the elements greater than 0
                                   ie, at least one true

16 বাইট সহ3>0#.@p:0 2 _2&+
মাইল

@ মাইলস দুর্দান্ত ফলাফলগুলি প্রক্রিয়া করতে বেস 2 এর খুব চালাক ব্যবহার।
জোনা



1

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

a=x=>f(x)&(f(x+2)|f(x-2));f=(n,x=n)=>n%--x?f(n,x):x==1


1

এক্সেল ভিবিএ, 102 100 বাইট

ভিবিএর জন্য কোনও প্রাথমিকতা অন্তর্নির্মিত নয় :(

কোড

বেনামে VBE অবিলম্বে উইন্ডো ফাংশন যা ঘর থেকে ইনপুট নেয় [A1]এবং 1(সত্যবাদী) বা 0(মিথ্যা) ভিবিই ইমিডিয়েট উইন্ডোতে আউটপুট নেয়

a=[A1]:?p(a)*(p(a-2)Or p(a+2))

সহায়ক কার্য

Function p(n)
p=n>2
For i=2To n-1
p=IIf(n Mod i,p,0)
Next
End Function

বিকল্পভাবে, 122 বাইট

কোড

পুনরাবৃত্তিমূলক চেক ফাংশন ভিত্তিক সমাধান

a=[A1]:?-1=Not(p(a,a-1)Or(p(a-2,a-3)*p(a+2,a+1)))

সহায়ক কার্য

Function p(n,m)
If m>1Then p=p(n,m-1)+(n Mod m=0)Else p=n<=0
End Function

0

পিএইচপি, 85 বাইট 24 বাইট মাইউব ধন্যবাদ

e($n){return f($n)&&((f($n-2)||f($n+2)))
f($n){for($i=$n;--$i&&$n%$i;)return $i==1;}

এই 1 টি অক্ষর উভয় ফাংশন নাম পরিবর্তন করে যথেষ্ট golfed যাবে প্রতিটি (যেমন aএবং b)
Skidsdev

2
পিএইচপি functionকি আর কীওয়ার্ডের দরকার নেই?
তিতাস


0

জাপট , 13 বাইট

j ©[U+2U-2]dj

ফিরে আসে trueএবং falseএই সংখ্যাটি কোনও মূল যমজ জুটির অংশ কিনা for

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

ব্যাখ্যা

অন্তর্ভুক্ত: U= ইনপুট পূর্ণসংখ্যা

j ©

ইনপুটটি প্রধান ( j), এবং ( ©) কিনা তা পরীক্ষা করুন ...

[U+2U-2]dj

অ্যারে ব্যবহার করে [U+2, U-2], প্রাথমিক dফাংশন ( j) অনুসারে কোনও আইটেম সত্য ( ) সত্য কিনা তা পরীক্ষা করে দেখুন ।

এর বুলিয়ান ফলাফলের অন্তর্নির্মিত ফলাফল is input prime AND is any ±2 neighbor prime


হুম ... আমার মনে হচ্ছে [U+2U-2]অনেক খাটো হতে পারে তবে কীভাবে আমি তা বুঝতে পারি না ...
ETH প্রোডাকশন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.