बड़ी संख्या में प्राइम नंबर


11

बड़ी संख्या को देखते हुए (बेस 10 में), जैसे कि 1234567891011121314151617, इसमें प्राइम "सबन्यूट्स" ढूंढें।
एक प्राइम "सबनंबर" अंकों का एक निरंतर अनुक्रम है (इनपुट से लिया गया), जो एक अभाज्य संख्या (आधार 10 में) का प्रतिनिधित्व करता है।

  • इनपुट : एक संख्या (या तो एक स्ट्रिंग, एक फ़ाइल, या जो कुछ भी आपको पसंद है)।
  • आउटपुट : सभी प्राइम सबन्यूटर्स किसी भी तरह अलग हो गए (या तो एक सूची में, एक फ़ाइल, अल्पविराम से अलग किए गए तार ...) यदि परिणाम खाली है, तो आप अपनी पसंद का कोई भी कन्वेंशन ले सकते हैं (हार्डकोड स्ट्रिंग, खाली स्ट्रिंग, जिबरिश, लेकिन यह प्रोग्राम नहीं होना चाहिए दुर्घटना।
  • उदाहरण
    1234 -> 2, 3, 23
    6542 -> 5, 2
    14 -> [.. खाली उत्पादन]

यह कोड-गोल्फ है। सबसे छोटा कार्यक्रम जीत!
[संपादित करें]: अतिरिक्त नियम, कार्यक्रम को समझाया जाना चाहिए! हर कोई जेली में धाराप्रवाह नहीं है :)


3
PPCG में आपका स्वागत है!
लुइस फेलिप डी जीसस मुनोज


1
निर्दिष्ट नहीं है। जो भी तुम्हें पसंद है करो।
रेजिस पोर्टेलेज़

1
युक्ति: यह बहुत जल्द एक उत्तर को स्वीकार करने वाला है; यह दूसरों को समाधान पोस्ट करने से हतोत्साहित कर सकता है।
झबरा

2
@RegisPortalez स्वागत है, और अच्छी चुनौती! मैंने पाया है कि "स्वीकार करें" सुविधा का उपयोग पीपीसीजी पर उस तरह से बिल्कुल नहीं किया जाता है जिस तरह से नेटवर्क में अन्य साइटों पर होता है। हम किसी भी भाषा में अच्छे उत्तरों को महत्व देते हैं।
एन जी एम

जवाबों:


6

05AB1E (विरासत) , 3 बाइट्स

Œʒp

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

इनपुट जो कि प्राइम हैं।


यह मुश्किल हो जाएगा कम :)
Regis Portalez

इस कार्य के लिए सही भाषा
जोनाथन एलन

5
@ एमओबी जो एन्कोडिंग पर निर्भर करता है। में 05AB1E एन्कोडिंग , इस उत्तर 3 बाइट्स लंबा है।
डेनिस

2
इसके अनुसार, 34567 = 13 * 2659 प्राइम है, गलत लगता है: tio.run/##yy9OTMpM/f//6KRTkwr@/zc2MTUzBwA
fqqh

2
@frosqh यह वास्तव में नए 05AB1E रिलीज़ में पी (प्राइम) फ़ंक्शन का एक बग है: tio.run/##yy9OTMpM/f//6KRTkwr@/zc2MTTzBwA यह पहले से ही रिपॉजिटरी में तय हो चुका है लेकिन TIO पर धकेल नहीं दिया गया है। मैंने अपना उत्तर इस बीच विरासत संस्करण में बदल दिया है।
कलडो

6

पर्ल 6 , 28 बाइट्स

{grep &is-prime,+«m:ex/.+/}

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

:ex( "संपूर्ण") मैच ऑपरेटर के लिए झंडा mइसके बारे में हर संभव मैच वापसी बनाता है .+(यानी, एक या अधिक वर्ण के हर-स्ट्रिंग), यहां तक कि लोगों को ओवरलैपिंग। हाइपरोपरेटर वस्तुओं की उस सूची Matchको संख्याओं में बदल देता है , जिन्हें तब प्रधानता के लिए फ़िल्टर किया जाता है grep &is-prime


यहाँ मैं जाने जा रहा था{+«m:ex/(.+)<?{$0.is-prime}>/}
ब्रैड गिल्बर्ट b2gills

@ BradGilbertb2gills मैंने भी यही कोशिश की! मैं थोड़ा निराश हूं कि यह लंबा हो गया है।
सीन

समझाने के लिए धन्यवाद - मेरे जैसे पर्ल 4 डायनासोर के लिए हमेशा मददगार!
टोबे स्पाइट

5

ब्रेकीलॉग , 4 बाइट्स

-1 बाइट क्रॉपपेब के लिए धन्यवाद ।

sᶠṗˢ

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

इंडस्ट्रीज़ सभी substrings, रिम्स का ˢचुनाव करें


2
sᶠṗˢएक बाइट कम है यह सभी सबस्ट्रिंग पाता है और जो प्रमुख हैं उन्हें लौटाता है। यहाँ देखें codegolf.stackexchange.com/a/117871/81957
क्रॉपेब

5

पायथन 2 , 66 65 बाइट्स

P=k=1
n=input()
while~n+k:
 if`k`in`n`>0<P%k:print k
 P*=k*k;k+=1

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


होना चाहिए while k<=nया, 0 बाइट खर्च करने के लिए,while~n+k
जोनाथन एलन

@JonathanAllan आपको धन्यवाद। पहले मुझे लगा कि संख्या को आउटपुट से बाहर रखा जाना चाहिए, लेकिन ऐसा लगता है कि ऐसा नहीं है।
ovs

@JonathanAllan क्या आप बता सकते हैं कि कृपया whileकथन से कोड को बताएं ? मैंने इस प्रकार के कोड पहले नहीं देखे हैं। यह भी `` का उपयोग नहीं देखा है , यह क्या करता है?
13

1
@taritgoswami while stmt:तब तक चलेगा जब तक stmtएक मूल्य है जो अजगर द्वारा सत्य माना जाता है। पायथन में एकमात्र मिथ्या पूर्णांक है 0। इसलिए कोड के रूप में चलेगा ~n+k != 0~बिटवाइज़ पूरक ऑपरेटर है, और ~nइसके बराबर है -n - 1~n + k != 0<=> -n - 1 + k != 0<=> k != n + 1। हम incrementing रहे हैं kद्वारा 1हर ऑपरेशन में, k != n + 1इस मामले बराबर करने के लिए है k <= n
अंडा

1
@taritgoswami और पायथन 2 में `n`भी ऐसा ही है repr(n)(पायथन 3 में काम नहीं करता है)।
अंडा


3

जेली ,  5  4 बाइट्स

-1 केविन क्रूज़सेन के लिए धन्यवाद (इसके लिए एक उपनाम है ÆP)

ẆḌẒƇ

एक मोनाडिक लिंक जो अंकों की एक सूची को स्वीकार करता है * जो प्रमुख पूर्णांकों की सूची देता है।

* एक पूर्णांक लेने के लिए "या तो एक स्ट्रिंग, एक फ़ाइल, या जो कुछ भी आपको पसंद है" - एक के साथ कोड को उपसर्ग करें D

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

कैसे?

ẆḌẒƇ - Link: list of integers (digits)   e.g. [1,2,3,4]
Ẇ    - non-empty contiguous substrings        [[1],[2],[3],[4],[1,2],[2,3],[3,4],[1,2,3],[2,3,4],[1,2,3,4]]
 Ḍ   - convert to decimal (vectorises)        [1,2,3,4,12,23,34,123,234,1234]
   Ƈ - filter keep if:
  Ẓ  -   is prime?                            [2,3,23]

ÆPअगर मैं गलत नहीं हूँ तो क्या हो सकता है ?
केविन क्रूज़सेन

आह हाँ जो नए उपनामों में से एक है - धन्यवाद!
जोनाथन एलन

2

जावा 8, 148 147 बाइट्स

n->{for(int l=n.length(),i=l,j;i-->0;)for(j=l;j>i;){long k=2,x=new Long(n.substring(i,j--));for(;k<x;x=x%k++<1?0:x);if(x>1)System.out.println(x);}}

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

स्पष्टीकरण:

n->{                     // Method with String parameter and no return-type
  for(int l=n.length(),  //  Length of the input-String
          i=l,j;         //  Temp-integers
      i-->0;)            //  Loop `i` in the range [length, 0)
    for(j=l;j>i;){       //   Inner loop `j` in the range [length, 0)
      for(long k=2,      //    Set `k` to 2
               x=new Long(n.substring(i,j--)
                         //    Take the substring [`i`, `j`) from the input,
            );           //    convert it to a long, and set it as `x`
          k<x;           //    Inner loop as long as `k` is still smaller than `x`
        x=x%k++<1?       //     If `x` is divisible by `k`:
           0             //      Set `x` to 0
          :              //     Else:
           x);           //      Leave `x` unchanged
      if(x>1)            //    If `x` is now larger than 1 (a.k.a. If `x` is a prime):
        System.out.println(x);}}
                         //     Print `x` with a trailing newline to STDOUT


2

बैश + जीएनयू कोर यूटिल्स: 80 77 बाइट्स

for i in $(seq `tee a|wc -c`)
{
grep -oE .{$i}<a|factor|grep -oP ': \K\d+$'
}

यह सबसे छोटा नहीं हो सकता है, लेकिन मुझे कुछ भी बेहतर करने में परेशानी हो रही है। मदद अपेक्षित!

केवल पोसिक्स से चिपक कर, मुझे 82 मिले:

for i in $(seq `tee a|wc -c`)
{
grep -oE .{$i}<a|factor|awk -F\  'NF<3{print$2}'
}

बैश स्ट्रिंग टुकड़ा करने की क्रिया मदद कर सकता है? यह शर्म की बात है कि बार्डर रेंज का विस्तार मापदंडों से पहले किया जाता है ...
टोबी स्पाइट

@TobySpeight जिसमें दो छोरों (शुरुआत के लिए एक, अंत के लिए एक) की आवश्यकता होगी, यह उल्लेख करने के लिए कि आप स्लाइस प्रतिस्थापन के अंदर चर का उपयोग नहीं कर सकते। Zsh इसे अनुमति देता है, हालांकि! मेरे मन में लघुता के लिए मुख्य मार्ग है कि सभी पदार्थों को उत्पन्न करने के लिए Awk का उपयोग किया जाए।
markasoftware





0

पायथ, 8 बाइट्स

fP_TsM.:

परीक्षण सूट

इनपुट को एक स्ट्रिंग के रूप में लेता है, पूर्णांकों की सूची को आउटपुट करता है। अतिरिक्त बाइट के लिए अंत में int जोड़कर` इनपुट भी ले सकते हैं ।

स्पष्टीकरण:
fP_TsM.:  | Full code
fP_TsM.:Q |  with implicit variables added
          | Print (implicit)
      .:Q |  list of all substrings of the input
    sM    |   converted to integers
fP_T      |    filtered for prime numbers

और `बस में परिवर्तित हो intजाता है str


0

वोल्फ्राम भाषा (गणितज्ञ) , 40 बाइट्स

Select[PrimeQ@*FromDigits]@*Subsequences

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

इनपुट और आउटपुट अंकों की सूची है। कोई प्राइम उपनल नहीं होने की स्थिति में खाली सूची {}वापस कर दी जाती है।

कार्यों के @*लिए उपयोग करता है CompositionSubsequencesइनपुट के सभी बाद की सूची देता है, और Select[PrimeQ@*FromDigits]एक ऑपरेटर का रूप होता है Selectजो सभी तत्वों की एक सूची PrimeQ@*FromDigitsदेता है जिसके लिए रिटर्न देता है True


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