ऑप्टिमस के अलावा अन्य अपराध


36

चुनौती

एक इनपुट पूर्णांक को देखते हुए n > 0, प्रिम्स की संख्या को आउटपुट करें ( अन्य की तुलना में n, यदि nस्वयं अभाज्य है) एक दशमलव एन के विस्तार में एक अंक को बदलकर (अंकों की संख्या को बदले बिना) उत्पन्न किया जा सकता है।

उदाहरण

उदाहरण के लिए, n = 2। दशमलव विस्तार में एक अंक को बदलकर 2, हम तीन अतिरिक्त अभाज्य संख्याओं के साथ आ सकते हैं 3, 5, 7, इसलिए a(n) = 3

एक और उदाहरण के लिए, n = 13। एक अंक को बदलकर, आप primes प्राप्त कर सकते हैं 11, 17, 19, 23, 43, 53, 73, 83, इसलिए a(13) = 8

एक अंतिम उदाहरण के लिए, n = 20। एक अंक को बदलकर, आप primes प्राप्त कर सकते हैं 23, 29, इसलिए a(20) = 2

अनुक्रम

यहां आरंभ करने के लिए पहले 20 शब्द हैं। यह OEIS A048853 है

4, 3, 3, 4, 3, 4, 3, 4, 4, 4, 7, 4, 8, 4, 4, 4, 7, 4, 7, 2

नियम

  • इनपुट और आउटपुट को आपकी भाषा के मूल पूर्णांक प्रकार में फिट करने के लिए ग्रहण किया जा सकता है।
  • इनपुट और आउटपुट किसी भी सुविधाजनक प्रारूप में दिए जा सकते हैं ।
  • अग्रणी शून्य को अनदेखा करें (उदाहरण के लिए, 03इस सूत्र के तहत एक प्रमुख संख्या नहीं है)।
  • या तो एक पूर्ण कार्यक्रम या एक समारोह स्वीकार्य हैं। यदि कोई फ़ंक्शन है, तो आप इसे प्रिंट करने के बजाय आउटपुट वापस कर सकते हैं।
  • यदि संभव हो, तो कृपया ऑनलाइन परीक्षण वातावरण का लिंक शामिल करें ताकि अन्य लोग आपके कोड को आज़मा सकें!
  • मानक खामियों को मना किया जाता है।
  • यह इसलिए सभी सामान्य गोल्फिंग नियम लागू होते हैं, और सबसे छोटा कोड (बाइट्स में) जीतता है।

4
मैं सबसे छोटा सोचने की कोशिश कर रहा हूं nजिसके लिए आउटपुट है 0। मुझे लगता है n = 200। मैं भी लगता है कि वे गुच्छों में आते हैं: 200,202,204,206,208, 320,322,...,328, 510,...,518, 620,...628, 840,...,848, आदि
इंजीनियर टोस्ट

क्या "इनपुट और आउटपुट को आपकी भाषा के मूल पूर्णांक प्रकार में फिट किया जा सकता है" यह बताता है कि हमें इनपुट को स्ट्रिंग के रूप में लेने की अनुमति नहीं है?
मृत पोसुम

1
@DeadPossum नहीं, इसकी अनुमति है। उदाहरण के लिए, यदि आपको केवल 32-बिट पूर्णांक का उपयोग कर रहे हैं, तो इनपुट के रूप में 2 ^ 100 के बारे में चिंता करने की आवश्यकता नहीं है।
AdmBorkBork

मुझे पता है कि क्या मैं ओवरबोर्ड जा रहा हूं ... मेरे पास अब 3 अलग-अलग सबमिशन हैं
पैट्रिक रॉबर्ट्स

2
@EngineerToast पहला उदाहरण प्राइम (294001) खोजने के बाद, मैंने आखिरकार इसे OEIS: A192545 और A158124 पर देखने का सोचा । इसके अलावा प्रासंगिक: A143641
अर्जन जोहान्सन

जवाबों:


10

05AB1E , 17 16 14 11 बाइट्स

ā°`<Ÿʒ.L}pO

स्पष्टीकरण:

ā             Push inclusive range from 1 to the length of the input
 °            Raise 10 to the power of each element
  `           Push each element to the stack
   <          Decrement the topmost element
    Ÿ         Inclusive range
              For 13, this creates an array like [10 11 12 13 14 .. 98 99]
     ʒ.L}     Only keep elements with a levenshtein distance to the input of
              exactly one
         p    Check each element for primality
          O   Sum

इसे ऑनलाइन आज़माएं! या 100 तक


1
.L? गंभीरता से? .L?!?!
आउटगोल्फर

@EriktheOutgolfer L
ओकेक्स

मेरा मतलब है, लेवेंसहाइटिन दूरी के लिए एक बिलिन है!
आउटगॉल्फ

@EriktheOutgolfer rik \ _ (_) _ /
Ok

मुझे पता है कि यह एक समय हो गया है, लेकिन आप <एक बाइट को बचाने के लिए हटा सकते हैं । यहां तक ​​कि अगर फ़िल्टर 100/ 1000/ 10000/ आदि को नहीं हटाता है , तो यह कभी भी प्राइम नहीं होता है, इसलिए यह आउटपुट को प्रभावित नहीं करेगा।
केविन क्रूज़सेन

5

पायथन 2 , 146 136 127 121 118 बाइट्स

सुझाव के लिए @ Mr.Xcoder को धन्यवाद

lambda I:sum(all(i%v for v in range(2,i))*sum(z!=x for z,x in zip(I,`i`))==1for i in range(1+10**~-len(I),10**len(I)))

स्पष्टीकरण:

इनपुट लंबाई के बराबर लंबाई उत्पन्न करें, पहले लंघन (1,10,100,1000, ...)

for i in range(1+10**~-len(I),10**len(I))

जाँच करें कि उत्पन्न संख्या केवल एक अंक से इनपुट से अलग है

sum(z!=x for z,x in zip(I,`i`))==1

प्राइम के लिए जाँच करें

all(i%v for v in range(2,i))

गिनती

sum(...)    

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


हो सकता है कि यह एक मेमना न बनाने के लिए छोटा हो, और r=rangeआप इसे कई बार इस्तेमाल करते हैं ...?
स्टीवी ग्रिफिन

1
क्या यह चीजों के लिए काम करता है 143? क्योंकि मैं देखता हूं range(1,10), कि बाहर है 0, और 103प्राइम
श्री एक्सकोडर

@ Mr.Xcoder तय
मृत Possum

1
आप की जरूरत नहीं है 0में r(0,10)r(10)पर्याप्त होता।
श्री Xcoder

1
इसके अलावा, मैं इसे इस तरह डालने का सुझाव देता हूं:lambda I,r=range:
श्री एक्सकोडर

4

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

इनपुट को एक स्ट्रिंग के रूप में लेता है और एक संख्या के रूप में देता है

n=>(n.replace(/./g,"$`a$' ").split` `.map(s=>s&&[..."0123456789"].map(d=>r+=+(t=s.replace(/a/,d))[0]&&t^n&&(p=v=>t>1&(--v<2||t%v&&p(v)))(t)),r=0),r)

उदाहरण कोड स्निपेट:

f=
n=>(n.replace(/./g,"$`a$' ").split` `.map(s=>s&&[..."0123456789"].map(d=>r+=+(t=s.replace(/a/,d))[0]&&t^n&&(p=v=>t>1&(--v<2||t%v&&p(v)))(t)),r=0),r)

for(var k=1;k<=20;k++)
  o.innerText+=f(""+k)+" "
<pre id=o></pre>


4

जेली , 21 18 15 बाइट्स

3 बाइट्स डेनिस के लिए धन्यवाद।

æḟ⁵æR×⁵$DnDS€ċ1

इसे ऑनलाइन आज़माएं! या सभी टेस्टकेस सत्यापित करें


æḟ⁵æR×⁵$DnDS€ċ1कुछ बाइट्स बचाता है।
डेनिस

वैकल्पिक रेंज काफी चालाक है।
लीकी नून

3

गणितज्ञ, १०५ बाइट्स

F=Count[Range[f=IntegerDigits;g=10^Length@f@#/10,10g],n_/;PrimeQ@n&&MatchQ[f@n-f@#,{x=0...,_,x}]&&n!=#]&;

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

Functionजो एक सकारात्मक पूर्णांक की उम्मीद करता है #fफ़ंक्शन के बराबर सेट IntegerDigitsजो अपने इनपुट के अंकों की सूची लौटाता है। हम ले Rangeसे gकरने के लिए 10g(सम्मिलित), जहां g=10^Length@f@#/10से सबसे बड़ी शक्ति है 10कम से कम या इनपुट के बराबर #है, तो ऐसा है कि । जाँच करता है कि क्या प्रधान है, जाँच करता है कि क्या अंकों की सूची के बीच का अंतर है और क्या है , और यह सुनिश्चित करता है कि और हैं ।CountnPrimeQ@n&&MatchQ[f@n-f@#,{x=0...,_,x}]&&n!=#PrimeQ@nnMatchQ[f@n-f@#,{x=0...,_,x}]n#{0..., _, 0...}n!=#n#Unequal


3

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

n=>([...n].map((c,i,[...a])=>[...''+1e9].map((u,j)=>s+=j+i&&j!=c?p((a.splice(i,1,j),a.join``)):0),s=0,p=q=>eval('for(k=q;q%--k;);k==1')),s)

इनपुट को एक स्ट्रिंग के रूप में स्वीकार करता है। अमान्य इनपुट के लिए अपरिभाषित व्यवहार, हालांकि इसे किसी भी स्ट्रिंग पर त्रुटि के बिना समाप्त करना चाहिए, जिसके बारे में मैं सोच सकता हूं। जरूरी नहीं कि ब्रह्मांड की गर्मी-मृत्यु से पहले, विशेष रूप से लंबे तारों के लिए।

डेमो

f=
n=>([...n].map((c,i,[...a])=>[...''+1e9].map((u,j)=>s+=j+i&&j!=c?p((a.splice(i,1,j),a.join``)):0),s=0,p=q=>eval('for(k=q;q%--k;);k==1')),s)
console.log([...''+1e19].map((_,i)=>f(i+1+'')).join())
i.onchange=()=>console.log(f(i.value))
<input id=i>

सुधार

reduce()कॉल में map()कॉल को रीक्रिएट करके aऔर फ़ंक्शन पैरामीटर में सरणी की प्रतिलिपि बनाकर, कॉल के संदर्भ में, इसके बजाय 11 बाइट्स सहेजे गए splice()

सहेजे जाने के लिए @Neil के सुझाव के लिए 3 बाइट्स सहेजे [...Array(10)]गए [...''+1e9]

अनारक्षित कोड

input => (
  [...input].map(
    (char, decimal, [...charArray]) =>
      [...'' + 1e9].map(
        (unused, digit) => sum +=
          digit + decimal && digit != char ?
            prime(
              (
                charArray.splice(decimal, 1, digit)
                , charArray.join``
              )
            ) :
            0
      )
    , sum = 0
    , prime = test => eval('for(factor = test; test % --factor;); factor == 1')
  )
  , sum
)

व्याख्या

फ़ंक्शन दो-स्तर का उपयोग करता है जो map()कि प्रायोगिक परीक्षण पास करने वाले क्रमपरिवर्तन की राशि को जोड़ते हैं, जिसे इस उत्तर से उधार लिया गया था और संशोधित किया गया था ।

(मूल उत्तर)

reduce((accumulator, currentValue, currentIndex, array) => aggregate, initialValue)

उदाहरण के लिए, एक सरणी की राशि की गणना करने के लिए, आप एक से होकर गुजरेगा initialValueकी 0है, और एक वापसी aggregateके बराबर accumulator + currentValue। इस दृष्टिकोण को थोड़ा संशोधित करते हुए, हम इसके बजाय क्रमबद्धता परीक्षण पास करने वाले क्रमपरिवर्तन की संख्या की गणना करते हैं:

reduce(
  (passedSoFar, currentDecimal, currentIndex, digitArray) =>
    isValidPermutation() ?
      passedSoFar + prime(getPermutation()) :
      passedSoFar
  , 0
)

यह मूल रूप से आंतरिक है reduce(), जो digitArrayप्रत्येक decimalको एक विशिष्ट में बदलकर सभी क्रमपरिवर्तन को प्रसारित करता है permutatedDigit। इसके बाद हमें reduce()हर संभव permutatedDigitको बदलने के लिए एक बाहरी की आवश्यकता decimalहोती है, जिसमें से प्रत्येक को बदलना है , जो कि बस है 0-9

कार्यान्वयन में असामान्यताएं

[...''+1e9].map((u,j)=>...सबसे छोटा तरीका था @Neil एक तर्क के 0माध्यम से पुनरावृति के बारे में सोच सकता था 9। ऐसा करने के लिए बेहतर होगा u, लेकिन uइस मामले में सरणी में प्रत्येक तत्व के लिए उपयोगी नहीं है।

i+j0चुनौती की स्थिति के अनुसार, यह सुनिश्चित करने के लिए कि वर्तमान अंक का एक संभावित क्रमपरिवर्तन नहीं है, यह सुनिश्चित करने के लिए टर्नरी स्थिति की जाँच करता है। j!=cयह सुनिश्चित करता है कि मूल nकोई उम्मीदवार नहीं है जो परीक्षा के माध्यम से जाना है।

(a.splice(i,1,j),a.join``)एक गड़बड़ है। splice()पर अंकों की जगह decimal == iके साथ permutatedDigit == j, लेकिन जब से splice()रिटर्न हटा तत्वों (इस मामले में, के बराबर होगा [a[i]]संशोधित सरणी के बजाय), हम संशोधित सरणी पारित करने के लिए अल्पविराम ऑपरेटर का उपयोग करना चाहिए aइससे पहले कि primality परीक्षण करने के लिए नहीं, बल्कि join()यह ing एक संख्या स्ट्रिंग में।

अंत में, eval()अधिक विहित दृष्टिकोण की तुलना में बाइट को बचाने के लिए, यह छोटा है:

q=>eval('for(k=q;q%--k;);k==1')

q=>{for(k=q;q%--k;);return k==1}

प्राइम टेस्ट के संदर्भ को कॉल के pलिए अप्रयुक्त तर्क में आरंभीकृत किया जाता है map()


मुझे लगता है कि सुझाव पृष्ठ [...''+1e9]छोटा है।
नील

2

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

lambda x,r=range,l=len:sum(~-f*(~-l(x)==sum(`f`[t]==x[t]for t in r(l(x))))and all(f%v for v in r(2,f))for f in r(10**~-l(x),10**l(x)))

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

अधिक सुंदर, लंबा संस्करण:

lambda x,r=range,l=len:l(filter(lambda f:(~-f*(~-l(x)==sum(`f`[t]==x[t]for t in r(l(x)))))*all(f%v for v in r(2,f)),r(10**~-l(x),10**l(x))))

इनपुट को स्ट्रिंग के रूप में लिया जाता है।


स्पष्टीकरण (पुराना संस्करण)

  • lambda x,r=range,l=len:- एक स्ट्रिंग पैरामीटर xऔर दो निरंतर मापदंडों के साथ एक लैम्ब्डा को परिभाषित करता है r=rangeऔर l=len

  • sum(1...)- लंबाई प्राप्त करें, जो 1 बाइट बचाता है len([...])

  • for f in r(10**~-l(x),10**l(x))- इनपुट (उम्मीद के अनुसार 0) के रूप में परिमाण के समान क्रम के साथ बिल्कुल सभी संख्याएं उत्पन्न करता है । उदाहरण के लिए, एक इनपुट 3, में परिणाम होगा [1, 2, 3, 4, 5, 6, 7, 8, 9]

  • sum(1for t in r(l(x))if`f`[t]==x[t])==~-l(x)and f>1 - जाँच करता है कि क्या इनपुट से वर्तमान संख्या ठीक 1 अंक दूर है, और यह 1 से अधिक है।

  • all(f%v for v in r(2,f)) - अगर मौजूदा नंबर प्राइम है तो चेक करें।


1
आप कुछ बाइट्स को बचाने के sum(1for..ifBOOL)लिए परिवर्तन को रोकते हैंsum(BOOLfor)
डेड पॉसूम

क्या हमें स्ट्रिंग के रूप में इनपुट लेने की अनुमति है? "इनपुट और आउटपुट को आपकी भाषा के मूल पूर्णांक प्रकार में फिट होने के लिए माना जा सकता है" मुझे यकीन नहीं है
डेड पोसुम

@DeadPossum कुछ उत्तर देते हैं। इसकी अनुमति क्यों नहीं दी जाएगी ?!
श्री एक्सकोडर

मैं आज के लिए वोटों से भाग रहा हूं, लेकिन +1 asap: D
डेड पॉसम

@DeadPossum ज़रूर। मत भूलो या मैं तुम्हें पिंग करूँगा! ( </joke>)
मिस्टर एक्सकोडर

1

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

i=(a=prompt()).length;s=0;while(i--)for(j=0;j<=9;j++){(b=[...a]).splice(i,1,j);k=b=b.join('');while(b%--k);s+=i+j&&a[i]!=j&&k==1}alert(s)

वेब एपीआई विधियों और का उपयोग करके एक पूर्ण-कार्यक्रम सबमिशन में मेरे अन्य उत्तर को एडाप्ट करता है ।prompt()alert()


1

बीन , 126 बाइट्स

00000000: a64d a065 8050 80a0 5d20 8001 a64d a06f  ¦M e.P. ] ..¦M o
00000010: 8025 39b5 cb81 2065 27a6 4da0 6680 2581  .%9µË. e'¦M f.%.
00000020: 0035 cb81 2066 27a6 53d0 80cd a05e 8043  .5Ë. f'¦SÐ.Í ^.C
00000030: cf20 5d00 2080 82a0 65a5 3a20 66a6 4da0  Ï ]. .. e¥: f¦M 
00000040: 6780 4da0 5e80 53d0 80a0 5e20 807b 2300  g.M ^.SÐ. ^ .{#.
00000050: b5cc a05e 8f4b c120 6728 264d a06f 814e  µÌ ^.KÁ g(&M o.N
00000060: cecc a065 8b20 6681 4cd0 84a0 5d20 6581  ÎÌ e. f.LÐ. ] e.
00000070: 2066 814c a067 8025 3a26 206f b130        f.L g.%:& o±0

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

मेरे पूर्ण-कार्यक्रम जावास्क्रिप्ट सबमिशन का एक रूपांतर ।

जावास्क्रिप्ट बराबर

i=a.length
s=0
while(i--){
  j=10
  while(j--){
    (b=[...a]).splice(i,1,j)
    k=b=b.join('')
    while(b%--k);
    s+=i+j&&a[i]!=j&&k==1
  }
}
s

व्याख्या

aएक स्ट्रिंग के रूप में इनपुट की पहली पंक्ति के रूप में अनुमानित रूप से आरंभिक है और अंतिम स्टेटमेंट sनिहित रूप से आउटपुट है, जिसमें प्रमुख क्रमपरिवर्तन का योग है।


1

भूसी , 32 बाइट्स

Lof§&ȯ=1Σzo±≠d⁰o=Ld⁰L↑o≤Ld⁰Lmdİp

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

Ungolfed / स्पष्टीकरण

                              İp  -- get all primes
                            md    -- and convert them to list of digits
                     ↑o≤   L      -- take as long as the lenghth of these digit lists are ≤ ..
                        Ld⁰       -- .. the number of digits of input 
 of                               -- from those primes filter:
               o=Ld⁰L             --   same number of digits as input
   §&                             --   and
        Σz                        --   the number of..
          o±≠d⁰                   --   .. digits that differ from input digits ..
     ȯ=1                          --   .. must be one
L                                 -- finally count them


1

PHP , 151 147 141 140 136 134 129 128 बाइट्स

-6 बाइट्स @Einacio की बदौलत; -1 बाईट @ थिट्स को धन्यवाद

<?php for($i=$m=10**strlen($n=$argv[1]);$i-->$m/10;)if(levenshtein($n,$i)==$f=$t=1){while($t<$i)$f+=$i%$t++<1;$c+=$f==2;}echo$c;

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

टिप्पणी के साथ प्रारूपित:

<?php
// Work through each integer with the same number of digits as the input $argv[1].
for ($i = $m = 10 ** strlen($n = $argv[1]); $i-- > $m / 10;)
    // Is it exactly one digit different from the input?
    if (levenshtein($n, $i) == $f = $t = 1) {
        // Count its factors.
        while ($t < $i) $f += $i % $t++ < 1;
        // If there are exactly 2 factors then it's a prime, so increment the counter.
        $c += $f == 2;
    }
// Print the final count.
echo $c;

इसे जितना संभव हो उतना छोटा रखने के लिए, मैंने:

  • संयुक्त असाइनमेंट $f = $t = 1;
  • एक ++और अभिव्यक्ति के हिस्से के रूप $f += $i % $t++ == 0में वेतन वृद्धि में वृद्धि ( मापांक के संचालन के बाद वेतन वृद्धि को निष्पादित किया जाता है और इसलिए इसका परिणाम प्रभावित नहीं होता है);
  • और ifसशर्त वेतन वृद्धि के लिए एक बयान का उपयोग करने के बजाय इस तथ्य का उपयोग किया है कि जब पूर्णांक 1 के रूप में डाली जाती है, तो बूलियन सच का उपयोग $c += $f == 2;करता है if ($f == 2) $c++;

1
आपको $ c को परिभाषित करने की आवश्यकता नहीं है, यह पहले + = पर 0 के रूप में गिना जाता है
Einacio

@Einacio गोल्फ नियम क्या हैं? क्या इसकी अनुमति है, क्योंकि यह एक अपरिभाषित चर चेतावनी नोटिस देता है?
वेबस्मिथ्री

@ Einacio जाहिर तौर पर STDERR के किसी भी आउटपुट को नजरअंदाज किया जा सकता है, इसलिए सुझाव के लिए धन्यवाद।
वेबस्मिथ्री

1
के उपयोग के लिए +1 levenshtein। अछा सुझाव! $i%$t++<1से छोटा है $i%$t++==0
टाइटस


0

PHP, 100 + 1 बाइट्स

for(;~($a=$argn)[$i];$i++)for($d=-!!$i;$d++<9;$c+=$k==1)for($a[$i]=$d,$k=$a;--$k&&$a%$k;);echo$c-$i;

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

टूट - फूट

for(;~($n=$argn)[$i];$i++)  # loop through argument digits, restore $n in every iteration
    for($d=-!!$i;               # loop $d from 0 (1 for first digit)
        $d++<9;                 # ... to 9
        $c+=$k==1                   # 3. if divisor is 1, increment counter
    )
        for($n[$i]=$d,              # 1. replace digit
            $k=$n;--$k&&$n%$k;      # 2. find largest divisor of $n smaller than $n
        );
echo$c-$i;                  # print counter - length

0

जावा 8, 201 194 बाइट्स

n->{String s=n+"";int r=0,i=0,j,k,t,u,l=s.length();for(;i<l;i++)for(j=0;++j<10;r+=n==u|t<2?0:1)for(u=t=new Integer(s.substring(0,i)+j+(i<l?s.substring(i+1):"")),k=2;k<t;t=t%k++<1?0:t);return r;}

स्पष्टीकरण:

इसे यहाँ आज़माएँ।

n->{                        // Method with integer as parameter and return-type
  String s=n+"";            //  String representation of the input-int
  int r=0,                  //  Result-integer
      i=0,j,k,              //  Index-integers
      t,u,                  //  Temp integers
      l=s.length();         //  Length of the String
  for(;i<l;i++)             //  Loop (1) from 0 to `l` (exclusive)
    for(j=0;++j<10;         //   Inner loop (2) from 1 to 10 (exclusive)
        r+=                 //     And after every iteration, raise the result by:
           n==u             //      If the current number equals the input
           |t<2?            //      or it is not a prime:
            0               //       Add nothing to the result-counter
           :                //      Else:
            1)              //       Raise the result-counter by one
      for(                  //    Inner loop (3)
          u=t=              //     First set both `u` and `t` to:
              new Integer(  //      Convert the following String to an integer: 
               s.substring(0,i)
                            //       Get the substring from 0 to `i` (exclusive)
               +j           //       + `j`
               +(i<l?       //       + If `i` is smaller than the String-length:
                  s.substring(i+1)
                            //          The substring from 0 to `i` (inclusive)
                 :          //         Else:
                  "")),     //          Nothing
          k=2;              //     And start `k` at 2
              k<t;          //     Continue looping as long as `k` is smaller than `t`
        t=t%k++<1?          //     If `t` is divisible by `k`:
           0                //      Change `t` to 0
          :                 //     Else:
           t                //      Leave `t` as is
      );                    //    End of inner loop (3)
                            //    (`t` remained the same after loop 3? -> It's a prime)
                            //   End of inner loop (2) (implicit / single-line body)
                            //  And of loop (1) (implicit / single-line body)
  return r;                 //  Return the result-counter
}                           // End of method

new Integer(s.substring(0,i)+j+(i<l?s.substring(i+1):"") इन पूर्णांकों में परिणाम होगा:

के लिए 0-9: 1, 2, 3, 4, 5, 6, 7, 8, 9
के लिए 10: 10, 20, 30, 40, 50, 60, 70, 80, 90, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19
के लिए 11: 11, 21, 31, 41, 51, 61, 71, 81, 91, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19
आदि।


0

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

एक स्ट्रिंग के रूप में इनपुट लेता है।

n=>[...2**29+'4'].map(d=>n.replace(/./g,c=>s+=d+i>0&(P=k=>N%--k?P(k):N-n&&k==1)(N=p+d+n.slice(++i),p+=c),i=p=0),s=0)|s

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

टिप्पणी की गई

n =>                        // n = input number (as a string)
  [...2**29 + '4']          // generate "5368709124" (all decimal digits)
  .map(d =>                 // for each digit d in the above string:
    n.replace(/./g, c =>    //   for each digit c in n:
      s +=                  //     increment s if the following code yields 1:
        d + i > 0 & (       //       if this is not the first digit of n or d is not "0":
          P = k =>          //         P = recursive function taking k and using N:
            N % --k ?       //           decrement k; if k is not a divisor of N:
              P(k)          //             do recursive calls until it is
            :               //           else:
              N - n &&      //             return true if N is not equal to n
              k == 1        //             and k is equal to 1 (i.e. N is prime)
          )(                //         initial call to P ...
            N =             //           ... with N defined as:
              p +           //             the current prefix p
              d +           //             followed by d
              n.slice(++i), //             followed by the trailing digits
                            //             (and increment the pointer i)
            p += c          //           append c to p
          ),                //         end of initial call
          i = p = 0         //         start with i = p = 0
    ),                      //   end of replace()
    s = 0                   //   start with s = 0
  ) | s                     // end of map(); return s

0

रूबी के साथ -rprime, 101 बाइट्स

-rprimeरूबी में प्रमुख मॉड्यूल आयात करता है। सभी प्राइम्स प्राप्त करें10एलआर(एलजी10n)+1 और गिनें कि कितने अंकों के समान अंक हैं n और भी 1 अंक के हैं।

->n{d=n.digits;Prime.each(10**l=d.size).count{|x|d.zip(e=x.digits).count{|a,b|a==b}==l-1&&e.size==l}}

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

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