क्या मेरे पास प्राइम ट्विन है?


23

एक पूर्णांक अभाज्य है यदि और केवल यदि यह धनात्मक है और इसके ठीक 2 भिन्न विभाजक हैं: 1 और स्वयं। एक जुड़वां प्राइम जोड़ी दो तत्वों से बनी होती है: pऔर p±2, दोनों ही प्राइम हैं।

आपको इनपुट के रूप में एक सकारात्मक पूर्णांक दिया जाएगा। मानक नियमों (मूल्यों के अनुरूप होने की जरूरत है) का पालन ​​करते हुए आपका काम एक सत्य / मिथ्या लौटना है, जो इस बात पर निर्भर करता है कि दिए गए पूर्णांक दो जोड़े के हैं या नहीं ।

परीक्षण के मामलों

  • ट्रूथी (ट्विन प्राइम): 3, 5, 7, 11, 13, 17, 19, 29, 31, 41, 43

  • झूठा (ट्विन प्राइम नहीं): 2, 15, 20, 23, 37, 47, 97, 120, 566

यह , इसलिए बाइट्स में सबसे छोटा कोड जीत जाता है!


13 एक प्रमुख जुड़वां है?
लाईफ़डेवेन जूले

@LiefdeWen हाँ, क्योंकि यह जोड़ी (11, 13) से संबंधित है
daniero

जवाबों:



11

जेली , 10 9 बाइट्स

%6+_2_ÆP⁺

इसे ऑनलाइन आज़माएं!

पृष्ठभूमि

(3, 5) के अपवाद के साथ , सभी जुड़वां प्राइम जोड़े फॉर्म (6k - 1, 6k + 1) के हैं

चूंकि (6k - 1) + (6k - 1)% 6 - 3 = 6k - 1 + 5 - 3 = 6k + 1 और
(6k + 1) + (6k + 1)% 6 - 3 = 6k + 1 + 1 + - 3 = 6k - 1 , दिए गए इनपुट n> 3 , यह जांचने के लिए पर्याप्त है कि क्या n और n + n% 6 - 3 दोनों ही प्राइम हैं।

यह सूत्र n = 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

इसे ऑनलाइन आज़माएं!

पृष्ठभूमि

सभी पूर्णांक निम्न रूपों में से एक लेते हैं, पूर्णांक k : 6k - 3 , 6k - 2 , 6k - 1 , 6k , 6k + 1 , 6k + 2 के साथ

चूंकि 6k - 2 , 6k , और 6k + 2 सभी समान हैं, और चूंकि 3 - 6k से विभाज्य है 3 को छोड़कर सभी अभाज्य संख्या, 2 और 3 इस रूप में होने चाहिए 6k - 1 या 6k + 1 । चूंकि (3, 5) के अपवाद के साथ एक जुड़वां प्राइम जोड़ी का अंतर 2 है , सभी ट्विन प्राइम जोड़े फॉर्म (6k - 1, 6k + 1) के हैं

N को 6k1 के रूप में होने दें ।

  • यदि n = 6k -1 , तो n + n% 6 - 3 = 6k - 1 + (6k - 1)% 6 - 3 = 6k - 1 + 5 - 3 = 6k + 1

  • यदि n = 6k + 1 , तो n + n% 6 - 3 = 6k + 1 + (6k + 1)% 6 - 3 = 6k + 1 + 1 - 3 = 6k - 1

इस प्रकार, यदि n एक जुड़वां प्राइम जोड़ी और n ≠ 3 का हिस्सा है , तो यह जुड़वा n + n% 6 - 3 होगा

यह काम किस प्रकार करता है

पायथन में एक अंतर्निहित परीक्षण नहीं होता है। जबकि संक्षिप्तता के लिए एकल संख्या का परीक्षण करने के लिए लघु-ईश तरीके हैं, दो नंबर के लिए ऐसा करना लंबा होगा। हम इसके बजाय विभाजकों के साथ काम करने जा रहे हैं।

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

मायने रखता है कि कितने पूर्णांक k कितने अंतराल में [2, 4n) विभाजित करते हैं (n + n% 6 - 3) n समान रूप से, यानी, इसके बारे में divisors की संख्या की गणना (n + n% से 6 - 3) n अंतराल में [2 , 4 एन) । हम दावा करते हैं कि यह गिनती 2 है अगर और केवल अगर n एक ट्विन प्राइम जोड़ी का हिस्सा है।

  • यदि n = 3 (एक जुड़वां प्राइम), (n + n% 6 - 3) n = 3 (3 + 3 - 3) = 9 में दो भाग ( 3 और 9 ) हैं [2, 12)

  • अगर n> 3 एक जुड़वां प्राइम है, जैसा कि पहले देखा गया है, तो m: = n + n% 6 - 3 इसका जुड़वां है। इस मामले में, mn के चार विभाजक हैं: 1, m, n, mn

    N> 3 के बाद से , हमारे पास m> 4 है , इसलिए 4n <mn और ठीक दो विभाजक ( m और n ) अंतराल [2, 4n) में आते हैं

  • अगर n = 1 , तो (n + n% 6 - 3) n = 1 + 1 - 3 = -1 का [2, 4) में कोई विभाजन नहीं है ।

  • अगर n = 2 , तो (n + n% 6 - 3) n = 2 (2 + 2 - 3) = 2 का एक भाजक (स्वयं) है [2, 8) में

  • यदि n = 4 , तो (n + n% 6 - 3) n = 4 (4 + 4 - 3) = 20 में चार भाजक हैं ( 2 , 4 , 5 , और 10 में) [2, 16)

  • यदि n> 4 सम, 2 , n / 2 है , और n सभी को विभाजित करते हैं n और इसलिए, (n + n% 6 - 3) nN> 4 के बाद से हमारे पास n / 2> 2 है , इसलिए [2, 4n) में कम से कम तीन भाजक हैं ।

  • यदि n = 9 , तो (n + n% 6 - 3) n = 9 (9 + 3 - 3) = 81 में तीन भाजक ( 3 , 9 , और 21 ) हैं [2, 36)

  • यदि n> 9 3 का गुणक है , तो 3 , n / 3 , और n सभी को विभाजित करते हैं n और, इसलिए, (n + n% 6 - 3) nN> 9 के बाद से हमारे पास n / 3> 3 है , इसलिए [2, 4n) में कम से कम तीन भाजक हैं ।

  • अंत में, यदि n = 6k> 1> 4 कोई जुड़वां प्राइम नहीं है, तो n या m: = n + n% 6 - 3 समग्र होना चाहिए और इसलिए, एक उचित भाजक d> 1 को स्वीकार करें ।

    के बाद से या तो n = m + 2 या मीटर = n + 2 और n, m> 4 , पूर्णांकों d , मीटर , और n हैं अलग से divisors एम.एन. । इसके अलावा, m <n + 3 <4n n> 1 के बाद से , इसलिए mn के पास कम से कम तीन डिवाइडर हैं [2, 4n)


वाह। इस तरह के छोटे कोड और अभी तक कई विशेष मामलों को इसे सही ढंग से संभालना चाहिए। किसी भी कारण से आप पायथन 3 कहते हैं? जहां तक ​​मैं बता सकता हूं कि यह पायथन 2 में भी काम करता है
कास्परड

हां, यह पाइथन 2 में भी काम करेगा। 3 TIO से ऑटो जनरेटेड SE पोस्ट का हिस्सा है।
डेनिस


4

PHP, 52 बाइट्स

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

बिना GMP, 84 बाइट्स

( स्टैक ओवरफ्लो से मेरे प्राइम फंक्शन का उपयोग करके )

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

साथ पाइप के रूप में चलाएँ -nF। झूठा उत्पादन के लिए खाली उत्पादन,1 लिए।

डेनिस का शानदार समाधान पीएचपी, 56 बाइट्स में पोर्ट किया गया

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

ऑनलाइन के साथ पाइप के रूप में चलाएं -nRया इसे आज़माएं



3

MATL , 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

परीक्षण सूट।


@Dennis के उत्तर में सूत्र का उपयोग करके 3 बाइट्स सहेजे गए। @ डेनिस को 1 बाइट धन्यवाद दिया।


पायथ , 14 बाइट्स * प्रारंभिक समाधान

&|P_ttQP_hhQP_

परीक्षण सूट।


2

रेटिना , 45 44 बाइट्स

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

1<`1¶1

1 रिटर्न अगर इनपुट एक जुड़वां प्रधानमंत्री है, तो 0 अन्यथा

इसे ऑनलाइन आज़माएं!

व्याख्या

.*              
$*

Unary में कनवर्ट करें

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और या तो -2या 2। जोड़ा जा रहा है *इस जंक्शन के नंबर के जंक्शन पैदा करता है *और संख्या के या तो * - 2या * + 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
आप दोनों को Thx
सर्ज के।

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

जावास्क्रिप्ट (ईएस 6), 54 बाइट्स

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


1

एक्सेल VBA, 102 100 बाइट्स

वीबीए के लिए बिल्ट-इन नहीं :(

कोड

बेनामी VBE तत्काल विंडो फ़ंक्शन जो सेल से इनपुट लेता है [A1]और VBE तत्काल विंडो में या तो 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

PHP, 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 वर्ण में बदलकर प्रत्येक (जैसे aऔर b)
स्किड्सदेव जूल

2
क्या functionअब PHP को कीवर्ड की आवश्यकता नहीं है?
टाइटस


0

जाप , 13 बाइट्स

j ©[U+2U-2]dj

रिटर्न trueऔर इसके falseलिए कि क्या नंबर एक प्रमुख जुड़वां जोड़ी का हिस्सा है या नहीं।

इसे ऑनलाइन आज़माएं!

व्याख्या

निहितार्थ: U= इनपुट पूर्णांक

j ©

जांचें कि क्या इनपुट प्राइम है ( j), और ( ©) ...

[U+2U-2]dj

सरणी का उपयोग करना [U+2, U-2], जांचें कि क्या कोई आइटम सही हैं ( d) primality function ( j) के अनुसार ।

के बूलियन परिणाम का निहित उत्पादन is input prime AND is any ±2 neighbor prime


हम्म ... मुझे लगता है कि [U+2U-2]बहुत छोटा हो सकता है, लेकिन मैं यह पता नहीं लगा सकता ...
ETHproductions
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.