सभी पॉज़िटिव नंबरों को प्रिंट / आउटपुट करें, जिसमें इसके दशमलव प्रतिनिधित्व में प्रत्येक बहु-अंक प्रतिस्थापन भी प्रमुख है।


15

कार्य

आपका कार्य उन सभी सकारात्मक नंबरों को प्रिंट या आउटपुट करना है , जिसमें इसके दशमलव प्रतिनिधित्व में प्रत्येक बहु-अंक प्रतिस्थापन भी प्रमुख है। यदि संख्या में कम से कम 2 अंक हैं, तो इसका अर्थ यह होगा कि संख्या को स्वयं भी प्रधान होना चाहिए।

उदाहरण

  • 6197अनुक्रम में है, क्योंकि हर बहु अंकों में सबस्ट्रिंग 6197प्रधानमंत्री, अर्थात् है: 61, 19, 97, 619, 197, 6197(अपने आप)।
  • ध्यान दें कि 6एक प्रमुख नहीं है, लेकिन 6197अभी भी अनुक्रम में है क्योंकि 6बहु-अंकों का विकल्प नहीं है 6197
  • 8इस क्रम में भी है क्योंकि हर बहु-अंक प्रतिस्थापन 8प्रधानमंत्री है। इसमें कोई बहु-अंक का विकल्प नहीं है 8, इसलिए यह रिक्त सत्य का मामला है

चश्मा

  • मानक खामियां लागू होती हैं, सिवाय इसके कि आपको आउटपुट को हार्डकोड करने की अनुमति है या अपने कार्यक्रम में आउटपुट से संबंधित जानकारी संग्रहीत करने की।
  • आउटपुट में नंबर किसी भी क्रम में हो सकते हैं ।
  • आउटपुट में संख्याओं को डुप्लिकेट रखने की अनुमति है।
  • आप किसी भी विभाजक का उपयोग कर सकते हैं , यदि आप आउटपुट के बजाय प्रिंट करना चुनते हैं।
  • आप कर रहे हैं की अनुमति दी और / या पोस्टफ़िक्स उत्पादन उपसर्ग अगर आप उत्पादन के बजाय मुद्रित करने के लिए चुनें।
  • विभाजक और उपसर्ग और पोस्टफ़िक्स सकता है नहीं (U + 0039 के लिए U + 0030) किसी भी अंक होने।

पूरी सूची (58 आइटम)

1
2
3
4
5
6
7
8
9
11
13
17
19
23
29
31
37
41
43
47
53
59
61
67
71
73
79
83
89
97
113
131
137
173
179
197
311
313
317
373
379
419
431
479
613
617
619
673
719
797
971
1373
3137
3797
6131
6173
6197
9719

संदर्भ


हमेशा की तरह, कृपया मुझे टिप्पणियों में संबोधित करने के लिए स्वतंत्र महसूस करें जो मुझे स्पष्ट करना चाहिए।


2
मैं @ फ़ेटलाइज़ को छोड़कर किसी को भी +300 का इनाम दूंगा जो इस चुनौती का सबसे छोटा जवाब Brachylog ( विकी लिंक ) ( TIO लिंक ) ( चैटरूम ) में जमा करता है।
लीक नून

2
बेचारा @ फ़ातिल हो गया। यही आपको एक भाषा बनाने के लिए मिलता है
लुइस मेंडू

3
मेरे पास 50 बाइट्स का उत्तर है :(
घातक

1
कार्यक्रम को समाप्त करना चाहिए?
घातक

2
@LeakyNun लगता है कि किसी को वह इनाम मिल रहा है!
जॉर्डन

जवाबों:



7

05AB1E , 15 13 बाइट्स

कोड:

4°GN§ŒD9›ÏpP–

स्पष्टीकरण:

  G            # For N in range 1,
4°             #   10000
   N           # Push N
    §          # Convert that to string
     Œ         # Get all substrings
      D9›Ï     # Keep all substrings that are greater than 9
          p    # Check each of them if they are prime
           P   # Product
            –  # If 1, print N

CP-1252 एन्कोडिंग का उपयोग करता है । इसे ऑनलाइन आज़माएं! (कुछ सेकंड लग सकते हैं)।


5

ब्रेकीलॉग , 18 17 15 16 15 बाइट्स

ℕ₁<l4&≜sᶠ{Ḋ|ṗ}ᵐ

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

-1 बाइट के साथ एक चर्चा के बाद फेटलीज़ ने मुझे सिर्फ यह देखने के लिए प्रेरित किया कि अगर मैं lऔर उसके <आसपास स्वैप करूँ तो क्या होगा ।

यह विधेय इनपुट चर के माध्यम से आउटपुट उत्पन्न करता है, इसलिए जब तक कि आउटपुट चर अप्रतिबंधित नहीं रह जाता है। चूंकि डुप्लिकेट की अनुमति है, प्रत्येक संख्या अपने अंकों की संख्या की शक्ति से 2 के बराबर गुणा के साथ उत्पन्न होती है जो कि प्राइम नंबर हैं।

ℕ₁                 The input variable is a natural number
  <                less than
   l4              some number with length 4 (maximized as 9999).
     &≜            Assign a number to the input, and assert that
       sᶠ          every substring of it
         { | }ᵐ    is either
            ṗ      a prime number
          Ḋ        or a single digit.

पुराने संस्करण:

{≜ℕsᶠ{Ḋ!|ṗ}ᵐ&}ᶠ⁵⁹b
7^₅⟦₁{sᶠ{Ḋ|ṗ}ᵐ&}ˢ
8ḟ⟦₁{sᶠ{Ḋ|ṗ}ᵐ&}ˢ
∧8ḟ>?ℕ₁≜sᶠ{Ḋ|ṗ}ᵐ

यह 16 बाइट्स है, लेकिन अप्रयुक्त है, क्योंकि 40320 तक सब कुछ चेक करना बिल्कुल तेज नहीं है:8ḟ⟦₁{sᶠ{Ḋ|ṗ}ᵐ&}ˢ
असंबंधित स्ट्रिंग

हालांकि, इसके बजाय 10000 के ऊपरी बाउंड को दिए गए जुर्माने को समाप्त कर दिया जाता है: tio.run/##SypKTM6ozMlPN/r/39AACB7NX/…
असंबंधित स्ट्रिंग

4

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

एक और Brachylog समाधान। मैं इसे एरिक आउटगॉल्फ के ब्रेकीलॉग समाधान से कम नहीं पा सका ; यह बिल्कुल समान लंबाई है, लेकिन पीढ़ी को विपरीत दिशा से ले जाता है।

{≜ℕ{sℕ₁₀}ᶠṗᵐ&}ᶠ⁵⁹b

ऐसा लगता है कि असंबंधित स्ट्रिंग ने कई चरित्रों को मार दिया है, जिन्हें मैं बधाई देता हूं।

स्पष्टीकरण:

{≜ℕ                Brute force all nonnegative integers to find any that match the constraints
   {s               Create a predicate that finds all subsequences of digits of said integer
     ℕ₁₀            Constrains those subsequences to be >= 10
        }ᶠ          Finds all possible values of that predicate: all multi-digit subsequences
          ṗᵐ        Apply a primality constraint to all of those subsequences
            &       Make the predicate output the input integer rather than a prime subsequence
             }ᶠ⁵⁹   Find the first 59 results (all of the puzzle's solutions, and zero)
                 b  Remove the first element of the list, i.e. 0

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


3

जेली , 17 बाइट्स

DẆṖÐfḌÆP€Ạ
³²RÇÐf

मेरा पहला जेली जवाब! सहेजे गए 3 बाइट @Leaky नन को धन्यवाद !

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

स्पष्टीकरण:

DẆṖÐfḌÆP€Ạ      The helper link, which checks if a given number satisfy the conditions.
DẆ              Convert the argument to a list of its digits and get all its substrings.
  ṖÐf           Remove all lists of length 1.
     ḌÆP€Ạ      Convert back each element to an integer and check if all of them are prime.

³²RÇÐf          Main link.
³²              Create a 100 and square it, which gives 10000.
  R             Create a list from 1 to it.
   ÇÐf          Filter out all the elements where the helper link gives false.

आपके पहले जेली जवाब पर बधाई!
लीक

2
RÇÐfसे बदला जा सकता है Ç€TṖÐfḌÆP€से बदला जा सकता है ḌḟDÆP
डेनिस

3

जावा 8, 182 बाइट्स

v->{for(int n=0;++n<1e4;)if(P(n)>0)System.out.println(n);}int p(int n){for(int i=2;i<n;n=n%i++<1?0:n);return n;}int P(int n){return n>99?p(n)*p(n%100)*p(n%1000)*P(n/10):n<10?n:p(n);}

गैस्ट्रोपनर के सी (gcc) उत्तर का पोर्ट , इसलिए उसका उत्तर सुनिश्चित करें!

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

स्पष्टीकरण:

// Loop in range [1,10000), and print any primes corresponding to the challenge description
v->{for(int n=0;++n<1e4;)if(P(n)>0)System.out.println(n);}

// Checks if the given integer is a prime (return unchanged input if prime, 0 if not)
int p(int n){for(int i=2;i<n;n=n%i++<1?0:n);return n;}

// Recursive method that checks if every part of length 2+ is a prime, or is below 10
int P(int n){return n>99?p(n)*p(n%100)*p(n%1000)*P(n/10):n<10?n:p(n);}

2

PowerShell v2 +, 107 104 बाइट्स

1..10+(11..1e4|?{($x=11..($i=$_)|?{"$i"-match$_}).count-eq($x|?{'1'*$_-match'^(?!(..+)\1+$)..'}).count})

चेतावनी: किंडा स्लो

से लूप्स 11के लिए 1e4(यानी, 10000) और बाहर का उपयोग कर संख्या खींचतान Where-Objectचयनकर्ता (|?{...} )। क्लॉज दो घटक हैं - पहला लूप 11वर्तमान संख्या तक होता है और Where-Objectउन नंबरों को बाहर निकालने के लिए उपयोग होता है जो करंट नंबर ( -matchरेगेक्स ऑपरेटर के माध्यम से ) का एक विकल्प बनाते हैं । हम उन सबस्ट्रिंग को स्टोर करते हैं $x। दूसरे भाग के माध्यम से लूप होता है $xऔर प्राइम रेगेक्सWhere-Object का उपयोग करके सभी प्राइम को बाहर निकालने के लिए उपयोग करता है । हम तो दोनों का चेक लेते हैं और चेक वास्तव में है कि क्या वे ual हैं। उदाहरण के लिए, होगा और उन में से प्रत्येक के प्रधानमंत्री हैं, इसलिए है और इस तरह का चयन किया जाएगा।.count-eq971$x = (71,97,971)3-eq3$TRUE971

यह परिणाम श्रेणी के साथ सरणी-संक्षिप्त है 1..10। परिणामी सरणी को पाइपलाइन पर छोड़ दिया गया है और आउटपुट अंतर्निहित है, डिफ़ॉल्ट रूप से तत्वों के बीच एक नई रेखा के साथ।



2

C (gcc) , 144 142 140 136 134 132 बाइट्स

-2 केविन क्रूज़सेन को धन्यवाद। -2 सीलिंग के लिए धन्यवाद

... और उसी से प्रेरित होकर हम लूप के लिए एक और 2 बाइट प्राप्त कर सकते हैं।

इसके अलावा बेशर्मी से केविन क्रूज़सेन के जवाब से बेहतर प्राइम चेकर को एक और -4 के लिए छोड़ दिया।

p(n,i){for(i=2;i<n;)n*=n%i++||n<10;i=n;}P(n){n=p(n)*(n<99||p(n%100)*p(n%1000)*P(n/10));}f(n){for(n=1e4;--n;)P(n)&&printf("%d\n",n);}

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


||n<10हो सकता है |n<10और -2 बाइट्स के लिए for(n=1;n<1e4;n++)हो सकता है for(n=0;++n<1e4;)
केविन क्रूज़सेन

@ केविनक्रूजसेन चीयर्स!
गैस्ट्रोपनर

2

Malbolge Unshackled (20-ट्रिट रोटेशन वैरिएंट), 2,5254e7 बाइट्स या 1,9809x7 बाइट्स

इस उत्तर का आकार अधिकतम पोस्ट करने योग्य प्रोग्राम आकार (eh) से अधिक है, इसलिए कोड मेरे GitHub रिपॉजिटरी में स्थित है (ध्यान दें: CTRL + A और CTRL + C का उपयोग करके कोड को कॉपी न करें, बस राइटक्लिक करें और "इस रूप में सहेजें" तत्व पर क्लिक करें। .. ")।

इसे कैसे चलाया जाए?

यह एक मुश्किल हिस्सा हो सकता है, क्योंकि भोले हास्कल दुभाषिया इसे चलाने के लिए उम्र पर उम्र ले लेंगे। TIO में अच्छे Malbogle Unshackled दुभाषिया हैं, लेकिन दुख की बात है कि मैं इसका (सीमाएं) उपयोग नहीं कर पाऊंगा।

मुझे जो सबसे अच्छा मिल सकता है, वह है 20-ट्रिट रोटेशन चौड़ाई वाला निश्चित संस्करण, जो बहुत अच्छा प्रदर्शन करता है।

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

#include <malloc.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

const char* translation = "5z]&gqtyfr$(we4{WP)H-Zn,[%\\3dL+Q;>U!pJS72Fh"
        "OA1CB6v^=I_0/8|jsb9m<.TVac`uY*MK'X~xDl}REokN:#?G\"i@";

typedef struct Word {
    unsigned int area;
    unsigned int high;
    unsigned int low;
} Word;

void word2string(Word w, char* s, int min_length) {
    if (!s) return;
    if (min_length < 1) min_length = 1;
    if (min_length > 20) min_length = 20;
    s[0] = (w.area%3) + '0';
    s[1] = 't';
    char tmp[20];
    int i;
    for (i=0;i<10;i++) {
        tmp[19-i] = (w.low % 3) + '0';
        w.low /= 3;
    }
    for (i=0;i<10;i++) {
        tmp[9-i] = (w.high % 3) + '0';
        w.high /= 3;
    }
    i = 0;
    while (tmp[i] == s[0] && i < 20 - min_length) i++;
    int j = 2;
    while (i < 20) {
        s[j] = tmp[i];
        i++;
        j++;
    }
    s[j] = 0;
}

unsigned int crazy_low(unsigned int a, unsigned int d){
    unsigned int crz[] = {1,0,0,1,0,2,2,2,1};
    int position = 0;
    unsigned int output = 0;
    while (position < 10){
        unsigned int i = a%3;
        unsigned int j = d%3;
        unsigned int out = crz[i+3*j];
        unsigned int multiple = 1;
        int k;
        for (k=0;k<position;k++)
            multiple *= 3;
        output += multiple*out;
        a /= 3;
        d /= 3;
        position++;
    }
    return output;
}

Word zero() {
    Word result = {0, 0, 0};
    return result;
}

Word increment(Word d) {
    d.low++;
    if (d.low >= 59049) {
        d.low = 0;
        d.high++;
        if (d.high >= 59049) {
            fprintf(stderr,"error: overflow\n");
            exit(1);
        }
    }
    return d;
}

Word decrement(Word d) {
    if (d.low == 0) {
        d.low = 59048;
        d.high--;
    }else{
        d.low--;
    }
    return d;
}

Word crazy(Word a, Word d){
    Word output;
    unsigned int crz[] = {1,0,0,1,0,2,2,2,1};
    output.area = crz[a.area+3*d.area];
    output.high = crazy_low(a.high, d.high);
    output.low = crazy_low(a.low, d.low);
    return output;
}

Word rotate_r(Word d){
    unsigned int carry_h = d.high%3;
    unsigned int carry_l = d.low%3;
    d.high = 19683 * carry_l + d.high / 3;
    d.low = 19683 * carry_h + d.low / 3;
    return d;
}

// last_initialized: if set, use to fill newly generated memory with preinitial values...
Word* ptr_to(Word** mem[], Word d, unsigned int last_initialized) {
    if ((mem[d.area])[d.high]) {
        return &(((mem[d.area])[d.high])[d.low]);
    }
    (mem[d.area])[d.high] = (Word*)malloc(59049 * sizeof(Word));
    if (!(mem[d.area])[d.high]) {
        fprintf(stderr,"error: out of memory.\n");
        exit(1);
    }
    if (last_initialized) {
        Word repitition[6];
        repitition[(last_initialized-1) % 6] =
                ((mem[0])[(last_initialized-1) / 59049])
                    [(last_initialized-1) % 59049];
        repitition[(last_initialized) % 6] =
                ((mem[0])[last_initialized / 59049])
                    [last_initialized % 59049];
        unsigned int i;
        for (i=0;i<6;i++) {
            repitition[(last_initialized+1+i) % 6] =
                    crazy(repitition[(last_initialized+i) % 6],
                        repitition[(last_initialized-1+i) % 6]);
        }
        unsigned int offset = (59049*d.high) % 6;
        i = 0;
        while (1){
            ((mem[d.area])[d.high])[i] = repitition[(i+offset)%6];
            if (i == 59048) {
                break;
            }
            i++;
        }
    }
    return &(((mem[d.area])[d.high])[d.low]);
}

unsigned int get_instruction(Word** mem[], Word c,
        unsigned int last_initialized,
        int ignore_invalid) {
    Word* instr = ptr_to(mem, c, last_initialized);
    unsigned int instruction = instr->low;
    instruction = (instruction+c.low + 59049 * c.high
            + (c.area==1?52:(c.area==2?10:0)))%94;
    return instruction;
}

int main(int argc, char* argv[]) {
    Word** memory[3];
    int i,j;
    for (i=0; i<3; i++) {
        memory[i] = (Word**)malloc(59049 * sizeof(Word*));
        if (!memory) {
            fprintf(stderr,"not enough memory.\n");
            return 1;
        }
        for (j=0; j<59049; j++) {
            (memory[i])[j] = 0;
        }
    }
    Word a, c, d;
    unsigned int result;
    FILE* file;
    if (argc < 2) {
        // read program code from STDIN
        file = stdin;
    }else{
        file = fopen(argv[1],"rb");
    }
    if (file == NULL) {
        fprintf(stderr, "File not found: %s\n",argv[1]);
        return 1;
    }
    a = zero();
    c = zero();
    d = zero();
    result = 0;
    while (!feof(file)){
        unsigned int instr;
        Word* cell = ptr_to(memory, d, 0);
        (*cell) = zero();
        result = fread(&cell->low,1,1,file);
        if (result > 1)
            return 1;
        if (result == 0 || cell->low == 0x1a || cell->low == 0x04)
            break;
        instr = (cell->low + d.low + 59049*d.high)%94;
        if (cell->low == ' ' || cell->low == '\t' || cell->low == '\r'
                || cell->low == '\n');
        else if (cell->low >= 33 && cell->low < 127 &&
                (instr == 4 || instr == 5 || instr == 23 || instr == 39
                    || instr == 40 || instr == 62 || instr == 68
                    || instr == 81)) {
            d = increment(d);
        }
    }
    if (file != stdin) {
        fclose(file);
    }
    unsigned int last_initialized = 0;
    while (1){
        *ptr_to(memory, d, 0) = crazy(*ptr_to(memory, decrement(d), 0),
                *ptr_to(memory, decrement(decrement(d)), 0));
        last_initialized = d.low + 59049*d.high;
        if (d.low == 59048) {
            break;
        }
        d = increment(d);
    }
    d = zero();

    unsigned int step = 0;
    while (1) {
        unsigned int instruction = get_instruction(memory, c,
                last_initialized, 0);
        step++;
        switch (instruction){
            case 4:
                c = *ptr_to(memory,d,last_initialized);
                break;
            case 5:
                if (!a.area) {
                    printf("%c",(char)(a.low + 59049*a.high));
                }else if (a.area == 2 && a.low == 59047
                        && a.high == 59048) {
                    printf("\n");
                }
                break;
            case 23:
                a = zero();
                a.low = getchar();
                if (a.low == EOF) {
                    a.low = 59048;
                    a.high = 59048;
                    a.area = 2;
                }else if (a.low == '\n'){
                    a.low = 59047;
                    a.high = 59048;
                    a.area = 2;
                }
                break;
            case 39:
                a = (*ptr_to(memory,d,last_initialized)
                        = rotate_r(*ptr_to(memory,d,last_initialized)));
                break;
            case 40:
                d = *ptr_to(memory,d,last_initialized);
                break;
            case 62:
                a = (*ptr_to(memory,d,last_initialized)
                        = crazy(a, *ptr_to(memory,d,last_initialized)));
                break;
            case 81:
                return 0;
            case 68:
            default:
                break;
        }

        Word* mem_c = ptr_to(memory, c, last_initialized);
        mem_c->low = translation[mem_c->low - 33];

        c = increment(c);
        d = increment(d);
    }
    return 0;
}

प्रदर्शन नोट

आवेदन मेरी मशीन पर लगभग 40 मिनट चला, अनुक्रम के हेक्स संख्या का उत्पादन। मैंने गणना के लगभग एक घंटे के लिए इसे रोक दिया, और यह 0x11 को समाप्त हो गया।

ध्यान दें कि यह उत्तर मेरे दूसरे से भिन्न है, क्योंकि यह वास्तव में संख्याओं की गणना करता है, और इसे बनाया जा सकता है, इसलिए यह अनिश्चित काल के लिए गणना करता है।

एप्लिकेशन स्पिनअप बफर को आवंटित करता है, जो कि लगभग 7 गीगाबाइट बड़ा है, इसलिए बेहतर है कि आप अपनी मुफ्त रैम तैयार करें।

वैकल्पिक रूप

वैकल्पिक संस्करण लगभग 2 गीगाबाइट मेमोरी का उपयोग करता है, लेकिन आउटपुट ASCII वर्णों (0 = ASCII (0x0), 10 = newline, आदि ...) के रूप में उत्पादन करता है, और यहां उपलब्ध है । हालांकि, यह चुनौती की आवश्यकताओं के कारण प्रतिस्पर्धा नहीं करता है


कोड गोल्फ संक्षिप्त उत्तर देने के बारे में है।
अल्फ

2
@Alfe Malbolge एक ऐसी भाषा है जिसे (विकिपीडिया लिंक) में प्रोग्राम करने के लिए बेहद कठिन बनाया गया था ; तथ्य यह है कि यह भी संभव है बहुत प्रभावशाली है।
ग्यूसेप

4
तो, वास्तव में, यह है एक संक्षिप्त उत्तर। बस मानकों को स्थानांतरित कर दिया जाता है। थोड़ा।
एल्फ

3
@ किसी भी बाइट को शेव करने की कोशिश में आपका स्वागत है! ;-)
ग्यूसेप

2

पायथन 3 , 118 बाइट्स

r=range(9720)
for n in r[1:]:all(all(l%k+9//l for k in r[2:l])for l in(n%10**(i%5)//10**(i//5)for i in r))and print(n)

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

व्याख्या

चेतावनी: इस समाधान में कोई वास्तविक तार शामिल नहीं हैं।

r=range(9720)
for n in r[1:]:                                        # For each positive integer up to 9720
 all( ... for l in(n%10**(i%5)//10**(i//5)for i in r)) # Check for all its substrings
  all(l%k ... for k in r[2:l])                         # If it is either prime
   +9//l                                               # Or smaller than 10
and print(n)                                           # Then print


1

पर्ल 6 ,  47 44  43 बाइट्स

for 1..9719 {all(m:ex/..+/).Int.is-prime&&.say}
put grep {is-prime +all(m:ex/..+/):},1..9719
put grep {is-prime +all m:ex/..+/:},1..9719

स्पष्टीकरण:

# print the values space separated, with trailing newline
put

# that match
grep -> $_ {

  # call the method 「.is-prime」 ( that is what 「:」 is for )
  # (autothreaded)
  is-prime

  # convert following to numeric (autothreaded)
  +
  # a junction of
  all(
    # all substrings 2 characters or greater
    $_ ~~ m :exhaustive / . .+ /
  )

  # needed to indicate that 「is-prime」 is a method call
  :

},

# in this Range
1..9719

1

सी #, 261 249 247 बाइट्स

बची 12 बाइट्स लीक लियुन की बदौलत

()=>{Action<int>w=System.Console.WriteLine;int i=0,n,j,k,p,m,b;for(;++i<10001;){n=(i+"").Length;if(n<2)w(i);else{b=1;for(j=1;++j<=n;)for(k=0;k+j<=n;){p=int.Parse((i+"").Substring(k++,j));if(p%2<1)b=0;for(m=3;m<p;m+=2)if(p%m<1)b=0;}if(b>0)w(i);}}};

इसमें संकलन किया गया है Func<List<int>>

स्वरूपित संस्करण ऐसा दिखता है:

() =>
{
    Action<int> w = System.Console.WriteLine;

    int i = 0, n, j, k, p, m, b;

    for (; ++i < 10001;)
    {
        n = (i + "").Length;

        if (n < 2)
            w(i);

        else
        {
            b = 1;
            for (j = 1; ++j <= n; )
                for (k = 0; k + j <= n; )
                {
                    p = int.Parse((i + "").Substring(k++, j));

                    if (p % 2 < 1)
                        b = 0;

                    for (m = 3; m < p; m += 2)
                        if (p % m < 1)
                            b = 0;
                }

            if (b > 0)
                w(i);
        }
    }
};

बस एक सूची का उपयोग किए बिना इसे सीधे प्रिंट करें
लीक नून

के बजाय falseया true, उपयोग 0>1और0<1
लीकी नून

आप का उल्लेख कर सकते इस अतिरिक्त गोल्फ टिप्स के लिए।
लीक नून

@LeakyNun सुझावों के लिए धन्यवाद, मैं आमतौर पर एक थोड़े गोल्फ संस्करण को प्राप्त करना पसंद करता हूं और फिर वहां से चला जाता हूं।
TheLethalCoder

1

स्विफ्ट 4 , 144 बाइट्स

let p={n in !(2..<n).contains{n%$0<1}}
print((1...971).filter{$0<10||p($0)&&($0<100||p($0/10)&&p($0%100))}+[1373,3137,3797,6131,6173,6197,9719])

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

व्याख्या

let p={n in !(2..<n).contains{n%$0<1}} // Helper function p, tests if a number is prime
print((1...971).filter{                // Print every number n in the range 1 to 971
 $0<10                                 //  that is less than 10
 ||p($0)&&                             //  or a prime and
 ($0<100                               //   is less than 100 or
  ||p($0/10)&&p($0%100))}              //   n/10 and n%100 are primes
+[1373,3137,3797,6131,6173,6197,9719]) // Print the four digit numbers

1

जावास्क्रिप्ट (Node.js) , 130 बाइट्स

अगर मैं अनंत ढेर मान सकते हैं i*i<=n&&हटाया जा सकता है और i*i>nकरने के लिए बदल जाता है i>=nजो 9 बाइट्स से कोड को कम कर देता है और हो सकता है पुनरावर्ती करने के लिए मुख्य समारोह में परिवर्तित: https://tio.run/##LYpBDoIwEEX33AMyAxVbXUmccgX2xkWDRYeQaSPqyrvXkrj5ef/lze7j1vHJ8bWTcPMpTQRMWjm6XJFs0/DZ@EM/ASunBmCsKtfG9/rIiJ0rIoEoJpNbKXPdx@1jx5akGEiytqdNYp2nNFr / wR @ xHkD2Rn81dpLGIGtYfLuEO0yAmH4 (119 बाइट्स)

_=>eval(`for(a=[i=1];++i<1e4;)P(i)&&a.push(i)`)||a
p=(n,i=1)=>i*i<=n&&n%++i?p(n,i):n%i
P=n=>n>9?p(n)*p(n%100)*p(n%1e3)*P(n/10|0):n

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


1

माल्बोल , 1361 बाइट्स

सरल और उबाऊ संस्करण। उच्चतम से संख्या प्रदर्शित करता है।

D'`r^"!=[YG3yUCvA-csNqp-nJ$HYFgDC#AbQ,|*)\rwvutm3kSonmlkdihg`&dc\aZ_X|V[ZYXQPt7SRQPOHGkKJIHG@d>=<A:98\}|:981U5.-2+0/.'K%$#G!E}e#z!~}v<]yxwpun4rkj0nmfN+ihaf_^$\a`_XW{>=YXWVONrLKPINGkE-IBAe(>=<;_?>=}|:3W1w543,P0).-&J*)(!E}|B"!~}|{zyr8potml2jongfkjibg`&d]\"`_XW{>=YXWVONr54JIHMFj-,HGF?>b%A@?87[;:981w543,P0).-&J*j(!EfeB"!~}_u;yrqpun4rqpihmlkjihg`&d]\"`_X|\[ZYXQuUNMLQJnH0LKJIBAe(>=<`#"8\<5Y9270T43,Pqp.-&J$)"!~D|#"y~}|u;s9qvotsrk1inglkdihg`&d]\"Z~XWVUZYXQu87SLKo2NGFjDIHGF?>bBA#"8\6;:981Uv.32+*)Mnm%$)('~D|{A!xwv{zyr8vXnsrkjoh.fNdchg`ed]#aC_^WVz=YXQPt7SRQPOHGkK-IHGF?>bBA#"8\6;:981Uv.32+*)Mnm%*#"F&%$#cy?}v<]\xwpun4rqSonmf,diha'eG]#a`_X|V[ZYXWPt76LKoIHGLEiCHGFED=aA:?>7[;:981w/4-,PO)o'&J*j(!E%edz@~}_u;yxqpo5mrqpoh.f,jibgf_%]\[!_XW{[ZYXQu87SLKo2NGFjJIHAF?c=BA@?>=<5Y38765.-Q10)o'&J*j(!E%e{z@~}|{ts9qpotsrk1oQglkd*)gIed]#DZ_^]VzZYRQuONMRKJnNGLEJCgG)(D=aA:?>=<;4X816/43,P0).-&+$H('gf|Bcb~w|u;yxwYutmrqj0nmleMib(fH%cba`_X|VUZYXWPt7SRQPOHGkEDIHG@dDC<;@?8\6|:32V0T43,+O)o'&J*)('&}C{"yxwv<tyr8vun4Ukpoh.fN+c)gIed]#DZ_^]VzTSRWPtTSLQJnH0LKJIBAe(>=BA@987[;:381Uv.32+*)Mnm%$)('~D${"y?}_uzyxqpo5srqSonmf,jihgfeG]#a`_X|V[ZYXWPt76LKo2NGFjJIH*)ED=a;@?>76;4X816/43,P*).',%I)('~Ded"y~}|u;srqvo5mlqpih.fN+cba`&d]\aZ~^]VUZSwWPUTSLpJ2NGLEiCHGFED=a;:?>7<5YX876v43,+O).-,+$H('&feBz!x}v{zsr8punsrk1inglkdihg`&d]\"Z~X]V[ZSwQVUTMRKo2NGFjDIHGF?>b%A@?87[;{921U5.3210)M-,%k#(!EfeB"y~}v{zyr8%

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


0

TI-83/84 बुनियादी, 124 बाइट्स

For(A,1,E4
DelVar Nint(log(A→P
Ans→Q
While Ans
For(I,0,Q-Ans
10^(P+1
AnsfPart(iPart(A/10^I)/Ans→S
min(Ans={2,3,5
If S≥7 and fPart(.5S
min(remainder(S,3+2cumSum(not(binompdf(int(.5√(S)),0
N+not(Ans→N
End
P-1→P
End
If not(N
Disp A
End

पहले 10k पूर्णांक पर लूप्स। N में एक काउंटर सेट करता है ताकि प्रत्येक प्राइमिंग प्राइम की जांच की जा सके, और int (लॉग मौजूदा संख्या में अंकों की संख्या से एक कम प्राप्त करता है। हम फिर उस नंबर को एक दूसरे वेरिएबल में सेट करते हैं ताकि हम प्रत्येक लंबाई के माध्यम से नीचे पी कर सकें। कम से कम 2 अंकों का प्रतिस्थापन। 10 ^ ... और AnsfPart (iPart, (), primality की जाँच करने के लिए वर्तमान विकल्प को उत्पन्न करता है, तो निम्नलिखित 3 पंक्तियाँ Ans में 1 या 0 के लिए primality की जाँच करती हैं। यदि प्रतिस्थापन प्रधानमंत्री नहीं है। , हम एन वृद्धि करते हैं, और सभी सबस्ट्रिंग की जांच की जाती है अगर एन अभी भी 0 है हम वर्तमान संख्या को प्रिंट करते हैं।

संभवतः इस परीक्षण की दिशा में प्रायोगिक जाँच की दक्षता बढ़ाने के लिए कुछ ट्वीकिंग की जा सकती है? मुझे खुशी है कि मैंने टीआई -83 प्रारूपण में सीधे आउटपुट को स्टोर करने की तुलना में कम बाइट्स में एक एल्गोरिथ्म पाया!



0

PHP , 135 बाइट्स

for(;++$n<1e4;$p||print"$n
")for($p=$i=0;$i<$l=strlen($n);$i++)for($j=1;$j++<$l-$i;$p|=$k)for($k=($m=substr($n,$i,$j))-1;$k&&$m%$k--;);

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

for(;                         // level 1 loop on
  ++$n<1e4;                   // all numbers from 1 to 10,000, $n is current number
  $p||print"$n\n"             // at the end of loop for each number, print $n if all multi digit sub strings were prime ($p=0)
)
  for(                        // level 2 loop on each digit of $n
    $p=                       // $p is a flag for all sub string primes and is set to 0 for each new $n
      $i=0;                   // $i is position of current digit (and sub string start position)
    $i<$l=strlen($n);         // $l is the total digits count in $n
    $i++                      // increment $i by one
  )
    for(                      // level 3 loop to create sub strings
      $j=1;                   // $j is length of sub string, we only care about multi digit sub strings so it starts from 1
      $j++<$l-$i;             // continue the loop as long as $j has not reached last digit and increment it by one
      $p|=$k                  // THIS IS RUN AFTER LOOP LEVEL 4: update $p flag based on value of $k
                              //     $p will be left at 0 only if all of the sub strings are prime (if $k is always 0)
    )
      for(                    // level 4 loop to check each sub string to be prime
        $k=(                  // $k is set to current sub string minus 1
          $m=substr($n,$i,$j) // $m is current sub string
        )-1;                  // 
        $k && $m%$k--;        // as long as $k is more than 0 and $m%$k is not zero, decrement $k by one and continue
                              //     a prime number will only get a 0 remainder, when $k gets to 1
                              //     so $k will be 0 for primes and more than 0 for non-primes
      );
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.