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


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 को 6k । 1 के रूप में होने दें ।

  • यदि 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) n । N> 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) n । N> 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.