একটি টুইস্ট সহ সবচেয়ে ছোট প্রধানমন্ত্রী (A068103)


33

হাতের কাজটি, একটি সংখ্যা দেওয়া হল, nসবচেয়ে ছোট প্রাইমটি সন্ধান করুন n যা সংখ্যার 2শুরুতে সংখ্যার সবচেয়ে কম দিয়ে শুরু হয় । এটি OEIS ( A068103 ) এ আমি খুঁজে পেয়েছি sequ

সিক্যুয়েন্সের প্রথম 17 নম্বর নীচে দেওয়া হয়েছে, আপনি যদি আরও চান তবে আমাকে অবশ্যই ক্রমটি প্রয়োগ করতে হবে, যা করতে আমি আপত্তি করি না।

0  = 2
1  = 2
2  = 223
3  = 2221
4  = 22229
5  = 2222203
6  = 22222223                # Notice how 6 and 7 are the same! 
7  = 22222223                # It must be **AT LEAST** 6, but no more than necessary.
8  = 222222227
9  = 22222222223             # Notice how 9 and 10 are the same!
10 = 22222222223             # It must be **AT LEAST** 9, but no more than necessary.
11 = 2222222222243
12 = 22222222222201
13 = 22222222222229
14 = 222222222222227
15 = 222222222222222043
16 = 222222222222222221

ভেবেছিলেন এটি স্ট্রিং ম্যানিপুলেশন, প্রাইম সনাক্তকরণ এবং ক্রমগুলির একটি দুর্দান্ত সংমিশ্রণ হবে। এটি , সর্বনিম্ন বাইট গণনাটি সম্ভবত মাসের শেষে বিজয়ী হিসাবে ঘোষণা করা হবে।


5
আমাদের যে ইনপুটটির উচ্চ সমর্থন করতে হবে তার কি কোনও নিম্ন সীমা আছে?
ইটিএইচ প্রডাকশনগুলি

1
সময়সীমা আছে?
ব্র্যাড গিলবার্ট

@ ইথ প্রডাকশনস দুঃখিত, এটি লেখার পরে বরং দ্রুত চলে গেলেন। যদি আপনাকে অবশ্যই নিজের ইনপুট সীমাবদ্ধ করতে হয় তবে ভাষাটি কেন সংখ্যার চেয়ে বেশি সংখ্যাকে সমর্থন করে না তার লজিক্যাল যুক্তিটি অবশ্যই সমর্থন করতে হবে x। উদাহরণস্বরূপ যদি আপনার ভাষা কেবল 32-বিট পূর্ণসংখ্যার সমর্থন করে তবে আপনি এটি ব্যাখ্যা করতে পারেন।
ম্যাজিক অক্টোপাস উরান

উত্তর:


12

ব্র্যাচল্যাগ , 12 11 বাইট

:2rj:Acb#p=

এটি অনলাইন চেষ্টা করুন!

এটি সরাসরি ব্র্যাচল্যাজে অনুবাদ করে log এটি একটি ফাংশন, সম্পূর্ণ প্রোগ্রাম নয় (যদিও Zকমান্ড-লাইন আর্গুমেন্ট হিসাবে দোভাষীকে দেওয়ার কারণে এটি একটি প্রোগ্রামে ফাংশনটি তৈরি করার জন্য উপযুক্ত মোড়কে যুক্ত করতে পারে; এটিই আমি টিআইও লিঙ্কটির কাজটি করার জন্য করেছি))। এটি মোটামুটি দুর্ভাগ্যজনক যা j-1-সূচকযুক্ত বলে মনে হয় এবং এটির জন্য অনুমোদনের প্রয়োজন ction

আপনি একটি যুক্তিসঙ্গত যুক্তি দিতে পারেন যে এটি =প্রয়োজনীয় নয়, তবে আমি মনে করি যে সমস্যার কথার উপায়টি দেওয়া হয়েছে, এটি হ'ল; ছাড়া, ফাংশন সব মৌলিক সংখ্যার যে প্রদত্ত সংখ্যার দিয়ে শুরু সেট বর্ণনা হচ্ছে 2গুলি, এবং কিছু স্পষ্ট বিবৃতি যে প্রোগ্রাম উচিত ছাড়া কি এই বিবরণ সঙ্গে কিছু (এই ক্ষেত্রে, প্রথম মান উৎপাদিত), এটি সম্ভবত না অনুমান সঙ্গে মেনে চলুন।

ব্যাখ্যা

:2rjbAcb#p=
:2rj         2 repeated a number of times equal to the input plus one
    :Ac      with something appended to it
       b     minus the first element
        #p   is prime;
          =  figure out what the resulting values are and return them

যখন কোনও পূর্ণসংখ্যা ফেরত ফাংশন হিসাবে ব্যবহৃত হয়, কোনও কিছুই কখনই প্রথমটির চেয়ে পূর্বের মূল্যগুলির অনুরোধ করে না, তাই আমাদের চিন্তার বিষয় হ'ল প্রথমটি।

একটি সূক্ষ্মতা (মন্তব্যে নির্দেশিত): :Acbএবং b:Acগাণিতিকভাবে সমতুল্য (যেমন একটি শুরু থেকে সরিয়ে দেয় এবং অন্যটি শেষ হয়, অঞ্চলটি কখনই ওভারল্যাপিং হয় না এর সাথে থাকে); আমার আগে ছিল b:Acযা বেশি প্রাকৃতিক, তবে এটি ইনপুট 0-এ ভেঙে যায় (যা আমি অনুমান করছি কারণ cকোনও শূন্য তালিকার সাথে কোনও কিছু খণ্ডন করতে অস্বীকৃতি জানায়; অনেক ব্র্যাচলগ বিল্টিন কোনও কারণে খালি তালিকায় ভাঙ্গতে ঝোঁক করে)। :Acbনিশ্চিত করে যে cকখনই খালি তালিকা দেখতে হবে না, মানে ইনপুট 0 এর ক্ষেত্রেও এখন কাজ করতে পারে।


@ মুডিফিশ: এটি করে। যাইহোক, এটি 0কোনও আপাত কারণের জন্য কার্যকর হয়নি (ব্র্যাচল্যাগ কোনও কারণে শূন্যগুলির সাথে অ্যালার্জিযুক্ত বলে মনে হয়; আমি সন্দেহ করি যে এটি cদায়ী কিনা) এটি বলেছে যে এটি ঠিক করা যথেষ্ট সহজ, সুতরাং আমি এখনই এটি ঠিক করব।

b:Acকাজ করে না কারণ ইনপুট জন্য 0আপনি পান 2b:Ac: 2bদেয় 0এবং আপনি cএকটি শীর্ষস্থানীয় শূন্যের সাথে ব্যবহার করতে পারবেন না । এর কারণ হ'ল সাধারণ ক্ষেত্রে অসীম লুপগুলি এড়ানো যেখানে আপনি সর্বদা একটি শূন্য প্রতিরোধ করতে এবং একই ফলাফল পেতে পারেন।
17:30

এছাড়াও, আপনি এর :2rjপরিবর্তে লিখে একটি বাইট দ্বারা সংক্ষিপ্ত করতে পারেন,2:?j
ফ্যাটালাইজ

আমি ভুলে গিয়েছিলাম r; এটি কেবল একটি সাধারণ উন্নতি আমি বুঝতে পারি যে কী চলছে c(আপনি পিছনের দিকে চালিত হওয়ার পরে অনন্তকালীন অনেকগুলি ফলাফল চান না); তবে, সম্ভাব্য উন্নতি হ'ল অবক্ষয়যুক্ত ইনপুটগুলি কেবল যদি আনবাউন্ড না হয় তবে তাদের ইনপুটটি ইতিমধ্যে হ্রাসযোগ্য মানের সাথে আবদ্ধ হলে তাদের অনুমতি দেয়।

এটি অবশ্যই কার্যকর এবং আমি এটি গিথুব ট্র্যাকারে যুক্ত করব। যদিও কনটেনেটের বাস্তবায়ন ইতিমধ্যে প্রায় 100 লাইন দীর্ঘ যা প্রোলগের ভবিষ্যদ্বাণীটির পক্ষে অনেক is
অনুগ্রহ করে

15

জাভা (ওপেনজেডিকে 8) , 164 110 বাইট

a->{int i=0;for(;!(i+"").matches("2{"+a+"}.*")|new String(new char[i]).matches(".?|(..+)\\1+");i++);return i;}

একগুচ্ছ বাইটের জন্য @ ফ্রাইআমডেজিমনকে ধন্যবাদ!

এটি অনলাইন চেষ্টা করুন!


2
আপনি কীভাবে ব্যাখ্যা করতে পারেন যে প্রাথমিকভাবে চেক রেজেক্স কীভাবে কাজ করে?
জে আন্তোনিও পেরেজ

আমার কোন ধারণা নাই. এটি আমার নয়, এবং আমি জানি না যে মূল স্রষ্টা কে। আমি ঠিক এখন যে দৈর্ঘ্য n এর একটি স্ট্রিং নেব এবং n প্রাইম না হলে মেলে।
পাভেল

আপনি কি জানেন যে মূল উত্সটি কী? আপনি এটি সম্পর্কে কোথায় শিখলেন? আপনি কি আপনার কোড পরীক্ষা করেছেন?
জে আন্তোনিও পেরেজ

3
@ পাভেল যে প্রাথমিকতা পরীক্ষা করে রেইগেক্স এই উত্তরটি চমকপ্রদ করে তোলে, এমনকি আপনি এটি তৈরি না করলেও। আপনার এটি "জাভায় গল্ফিংয়ের টিপস" থ্রেডে যুক্ত করা উচিত।
যাদু অক্টোপাস উরান

3
আমি এই মুহুর্তে কোডটি পরীক্ষা করতে পারছি না তবে আমি খুব নিশ্চিত যে রেইগেক্স এটির মতো কাজ করে: new String(new char[i]))সংখ্যার সমান দৈর্ঘ্যের একটি অবিচ্ছিন্ন স্ট্রিং তৈরি করে। তারপরে অঙ্কটি একটি সংখ্যার পুনরাবৃত্তি পুরো স্ট্রিংয়ের (মূলত ট্রায়াল বিভাগ) ফিট করে কিনা তা পরীক্ষা করে একটি যৌগিক সংখ্যার সাথে মেলে। আমি যদি সঠিক হয়ে থাকি তবে এর অর্থ আপনি দ্বিতীয় অংশটি না পেয়ে গল্ফ করতে সক্ষম হবেন ?, আমি যখন কম্পিউটারে পৌঁছে যাব তখন আপনাকে অবশ্যই জানাব।
FryAmTheEggman

5

পাইথ, 12 বাইট

f&!x`T*Q\2P_

সিউডোকোডে:

f                key_of_first_truthy_value( lambda T:
  !                  not (
   x`T*Q\2               repr(T).index(input()*'2')
                     )
 &                   and
          P_T        is_prime(T)
                 )

শর্তটি সন্তুষ্ট না হওয়া পর্যন্ত 1 দ্বারা বাড়ানো থেকে lambdaশুরু করে লুপগুলি T=1। এর স্ট্রিং 2অবশ্যই স্ট্রিংয়ের শুরু থেকেই একটি স্ট্রিং হতে হবে, অর্থাত্ সূচক পদ্ধতিতে ফিরে আসা দরকার 0। যদি -1স্ট্রিংিংটি পাওয়া যায় না তবে এটি ফিরে আসে যা স্বাচ্ছন্দ্যে সত্যও তাই কোনও ব্যতিক্রমী মামলা উপস্থিত নেই।

আপনি এখানে এটি অনলাইনে চেষ্টা করতে পারেন তবে সার্ভারটি কেবলমাত্র একটি ইনপুট পর্যন্ত মঞ্জুরি দেয় 4


4

পার্ল, 50 বাইট

কোড + -pপতাকা 49 বাইট ।

++$\=~/^2{$_}/&&(1x$\)!~/^1?$|^(11+)\1+$/||redo}{

চূড়ান্ত নিউলাইন ছাড়াই ইনপুট সরবরাহ করুন। এই ক্ষেত্রে:

echo -n 4 | perl -pE '++$\=~/^2{$_}/&&(1x$\)!~/^1?$|^(11+)\1+$/||redo}{'

এটি 4 টিরও বেশি সংখ্যক চালাতে কিছু সময় নেয় কারণ এটি প্রতিটি সংখ্যার পরীক্ষা করে (2 টি পরীক্ষা আছে: প্রথমটিতে /^2{$_}/পর্যায়ে 2 আছে কিনা তা প্রথম পরীক্ষা করে, দ্বিতীয়টি প্রাথমিকতার (1x$\)!~/^1?$|^(11+)\1+$/জন্য পরীক্ষা করে (খুব খারাপ পারফরম্যান্স সহ))।


3

হাস্কেল, 73 বাইট

f n=[x|x<-[2..],all((>0).mod x)[3..x-1],take n(show x)==([1..n]>>"2")]!!0

ব্যবহারের উদাহরণ: f 3-> 2221

পাশবিক বল. [1..n]>>"2"এর একটি তালিকা তৈরি করে n 2যা nবর্তমান প্রধানের স্ট্রিং উপস্থাপনায় প্রথম অক্ষরের সাথে তুলনা করা হয় ।


3

গণিত, 103 বাইট

ReplaceRepeated[0,i_/;!IntegerDigits@i~MatchQ~{2~Repeated~{#},___}||!PrimeQ@i:>i+1,MaxIterations->∞]&

নামহীন ক্রিয়াকলাপটি একটি nonnegative পূর্ণসংখ্যার যুক্তি গ্রহণ করে #এবং পূর্ণসংখ্যা ফেরত দেয়। এটি আক্ষরিক অর্থে সমস্ত ধনাত্মক পূর্ণসংখ্যার পরীক্ষা করে যতক্ষণ না এটি #দু'টি দিয়ে শুরু হয় এবং প্রধান হয় prime 5 এর উপরে ইনপুটগুলির জন্য মারাত্মকভাবে ধীর।

পূর্ববর্তী ফলাফল: গণিত, 155 বাইট

ম্যাথেম্যাটিকা গল্ফিংয়ের জন্য আরও ভাল হত যদি এটি এত দৃ strongly়ভাবে টাইপ না করা হত; আমাদের পূর্ণসংখ্যার / তালিকা / স্ট্রিং ধরণের মধ্যে স্পষ্টভাবে পিছনে পিছনে স্যুইচ করতে হবে।

(d=FromDigits)[2&~Array~#~Join~{1}//.{j___,k_}/;!PrimeQ@d@{j,k}:>({j,k+1}//.{a__,b_,10,c___}->{a,b+1,0,c}/.{a:Repeated[2,#-1],3,b:0..}->{a,2,0,b})]/. 23->2&

এই অ্যালগরিদমটি অদ্ভুতভাবে শুরু করে অঙ্কগুলির তালিকাগুলিতে পরিচালনা করে {2,...,2,1}। যতক্ষণ না এগুলি মৌলিক সংখ্যার অঙ্ক নয়, নিয়মটি ব্যবহার করে এটি শেষ সংখ্যায় একটি যুক্ত করে {j___,k_}/;!PrimeQ@d@{j,k}:>({j,k+1}... এবং তারপরে যেকোনটি হিসাবে দীর্ঘায়িতভাবে এক-থেকে-পরবর্তী-অঙ্ক বহন করে ম্যানুয়ালি প্রয়োগ করে নিয়মটি ব্যবহার করে 10 টি সমান সংখ্যার {a__,b_,10,c___}->{a,b+1,0,c}... এবং তারপরে, আমরা যদি এতদূর চলে গিয়েছি যে নেতৃস্থানীয় 2s এর শেষটি 3একটিতে পরিণত হয়েছে , নিয়মটি ব্যবহার করে, শেষে অন্য একটি অঙ্ক দিয়ে শুরু হবে {a,b+1,0,c}/.{a:Repeated[2,#-1],3,b:0..}->{a,2,0,b}/. 23->2শেষে শুধু বিশেষ ক্ষেত্রে যেখানে ইনপুট সমাধান করা হয়েছে 1সবচেয়ে মৌলিক মধ্যে শেষ হতে পারে না: 2কিন্তু 2পারেন। (ইনপুটগুলিতে কয়েকটি ত্রুটি ছড়িয়ে পড়ে 0এবং 1তবে ফাংশনটি সঠিক উত্তরটিতে পৌঁছায়))

এই অ্যালগরিদমটি বেশ দ্রুত: উদাহরণস্বরূপ, আমার ল্যাপটপে এটি 1000 2সেকেন্ডের সাথে প্রথম প্রাইম হয় তা গণনা করতে 3 সেকেন্ডেরও কম সময় লাগে 22...220521


2

পাইথ, 17 বাইট

f&q\2{<`T|Q1}TPTh

n = 4অনলাইনে সমস্যার সমাধান হতে পারে বলে মনে হয় না তবে এটি তত্ত্বের ক্ষেত্রে সঠিক।

ব্যাখ্যা

               Th    Starting from (input)+1, 
f                    find the first T so that
      <              the first
          Q          (input) characters
         | 1         or 1 character, if (input) == 0
       `T            of T's string representation
     {               with duplicates removed
  q\2                equal "2", 
 &                   and
            }T       T is found in
              PT     the list of T's prime factors.



2

পাইকে, 14 বাইট

.fj`Q\2*.^j_P&

এখানে চেষ্টা করুন!

.fj            - first number (asj)
   `    .^     -   str(i).startswith(V)
    Q\2*       -    input*"2"
             & -  ^ & V
          j_P  -   is_prime(j)

বাগফিক্সের পরে 12 বাইট এবং একটি নতুন বৈশিষ্ট্য

~p#`Q\2*.^)h

এখানে চেষ্টা করুন!

~p           - all the primes
  #       )h - get the first where...
   `    .^   - str(i).startswith(V)
    Q\2*     -  input*"2"

2

সেজ, 69 68 বাইট

lambda n:(x for x in Primes()if '2'*len(`x`)=>'2'*n==`x`[:n]).next()

অসীম অনেক শর্তের প্রথম (তাই সবচেয়ে ছোট) সন্ধান করতে একটি জেনারেটর ব্যবহার করে।


2

জাপট, 20 বাইট

L²o@'2pU +Xs s1)nÃæj

এটি অনলাইন পরীক্ষা! এটি আমার মেশিনে 14 সেকেন্ড পর্যন্ত সমস্ত ইনপুটের জন্য দুই সেকেন্ডের মধ্যে শেষ হয়ে যায় এবং এর পরে এটি স্বাভাবিকভাবে নির্ভুলতা হারাতে পারে (জাভাস্ক্রিপ্টটিতে কেবল 2 53 অবধি পূর্ণসংখ্যার নির্ভুলতা থাকে )।

এতে কাজ করার জন্য @ ওবরকনকে অনেক ধন্যবাদ :-)

ব্যাখ্যা

                       // Implicit: U = input integer, L = 100
L²o                    // Generate the range [0...100²).
   @             Ã     // Map each item X through the following function:
    '2pU               //   Take a string of U "2"s.
         +Xs s1)n      //   Append all but the first digit of X, and cast to a number.
                       // If U = 3, we now have the list [222, 222, ..., 2220, 2221, ..., 222999].
                  æ    // Take the first item that returns a truthy value when:
                   j   //   it is checked for primality.
                       // This returns the first prime in the forementioned list.
                       // Implicit: output result of last expression

জাপটের সর্বশেষতম সংস্করণে এটি 12 বাইট হতে পারে:

_n j}b!+'2pU   // Implicit: U = input integer
_   }b         // Return the first non-negative bijective base-10 integer that returns
               // a truthy value when run through this function, but first,
      !+       //   prepend to each integer
        '2pU   //   a string of U '2's.
               // Now back to the filter function:
 n j           //   Cast to a number and check for primality.
               // Implicit: output result of last expression

এটি অনলাইন পরীক্ষা! এটি 14 এ পর্যন্ত সমস্ত ইনপুটগুলির জন্য আমার মেশিনে আধা সেকেন্ডের মধ্যে শেষ করে।


দুর্দান্ত সমাধান!
অলিভার

এটি ইনপুট 5 এ ব্যর্থ হয়, যেহেতু আপনি কখনই পরীক্ষা করেন না 2222203, কেবল 222223এবং তারপরেই 2222210। এটি কোনও ইনপুটটিতেও ব্যর্থ হয় 2
গ্রেগ মার্টিন

@ গ্রেগমার্টিন ডারান, আপনি ঠিক বলেছেন 5 বাইট ব্যয়ে স্থির
ইটিএইচ প্রোডাকশনস

এটি পরীক্ষার কেসগুলিকে সংশোধন করে, তবে অ্যালগরিদম এখনও ধরে নিয়েছে যে প্রাইম সন্ধানের জন্য কখনও কখনও তিনটি বেশি সংখ্যার যোগ করতে হবে না, এটি বৃহত্তর ইনপুটগুলির জন্য মিথ্যা হতে পারে।
গ্রেগ মার্টিন

আপ 14 সব পরীক্ষার বিষয় এই কাজ @GregMartin, এবং জাতীয় ক্ষেত্রে 15 পূর্ণসংখ্যা স্পষ্টতা সমস্যার মধ্যে সঞ্চালিত আমি মনে করি না অ্যালগরিদম চাহিদা তাত্ত্বিক সঠিক গত 2 ^ 53 হতে কিন্তু সম্ভবত আমি ভুল ...
ETH প্রোডাকশনগুলি

2

পিএইচপি, 76 বাইট

for($h=str_pad(2,$i=$argv[1],2);$i>1;)for($i=$p=$h.++$n;$p%--$i;);echo$p?:2;

কমান্ড লাইন আর্গুমেন্ট থেকে ইনপুট নেয়। সাথে চালাও -r

ভাঙ্গন

for($h=str_pad(2,$i=$argv[1],2) # init $h to required head
    ;$i>1;                      # start loop if $p>2; continue while $p is not prime
)
    for($i=$p=$h.++$n               # 1. $p = next number starting with $h
                                    #    (first iteration: $p is even and >2 => no prime)
    ;$p%--$i;);                     # 2. loop until $i<$p and $p%$i==0 ($i=1 for primes)
echo$p?:2;                      # print result; `2` if $p is unset (= loop not started)

1

বাশ (+ কোর্টিল), 53 বাইট

আপ কাজ করে 2 ^ 63-1 (9223372036854775807) , এন> 8 শেষ পর্যন্ত যথেষ্ট সময় লাগে।

Golfed

seq $[2**63-1]|factor|grep -Pom1 "^2{$1}.*(?=: \S*$)"

পরীক্ষা

>seq 0 7|xargs -L1 ./twist

2
2
223
2221
22229
2222203
22222223
22222223

1

পাইথন 3, 406 বাইট

w=2,3,5,7,11,13,17,19,23,29,31,37,41
def p(n):
 for q in w:
  if n%q<1:return n==q
  if q*q>n:return 1
 m=n-1;s,d=-1,m
 while d%2==0:s,d=s+1,d//2
 for a in w:
  x=pow(a,d,n)
  if x in(1,m):continue
  for _ in range(s):
   x=x*x%n
   if x==1:return 0
   if x==m:break
  else:return 0
 return 1
def f(i):
 if i<2:return 2
 k=1
 while k:
  k*=10;l=int('2'*i)*k
  for n in range(l+1,l+k,2):
   if p(n):return n

পরীক্ষার কোড

for i in range(31):
    print('{:2} = {}'.format(i, f(i)))

পরীক্ষা আউটপুট

 0 = 2
 1 = 2
 2 = 223
 3 = 2221
 4 = 22229
 5 = 2222203
 6 = 22222223
 7 = 22222223
 8 = 222222227
 9 = 22222222223
10 = 22222222223
11 = 2222222222243
12 = 22222222222201
13 = 22222222222229
14 = 222222222222227
15 = 222222222222222043
16 = 222222222222222221
17 = 222222222222222221
18 = 22222222222222222253
19 = 222222222222222222277
20 = 2222222222222222222239
21 = 22222222222222222222201
22 = 222222222222222222222283
23 = 2222222222222222222222237
24 = 22222222222222222222222219
25 = 222222222222222222222222239
26 = 2222222222222222222222222209
27 = 2222222222222222222222222227
28 = 222222222222222222222222222269
29 = 2222222222222222222222222222201
30 = 222222222222222222222222222222053

আমি বাইট আকারের চেয়ে মোটামুটি বড় পরিসরে গতিতে যাওয়ার সিদ্ধান্ত নিয়েছি। :) আমি একটি ডিটারমিনিস্টিক মিলার-রবিন প্রিমিয়ামিটি টেস্ট ব্যবহার করি যা সাক্ষীর এই সেট সহ 3317044064679887385961981 অবধি গ্যারান্টিযুক্ত। বড় প্রাইমগুলি সর্বদা সফলভাবে পরীক্ষায় উত্তীর্ণ হবে, তবে কিছু সংমিশ্রণও পাস হতে পারে, যদিও সম্ভাবনা খুব কম। যাইহোক, আমি পাইকমে একটি এলিপটিক কার্ভ ফ্যাক্টেরাইজেশন প্রোগ্রাম ব্যবহার করে i> 22 এর আউটপুট নম্বরও পরীক্ষা করেছি এবং সেগুলি প্রধান হিসাবে উপস্থিত বলে মনে হয়।


1
প্রথম বন্ধ: জমা দেওয়ার ক্ষেত্রে সঠিক আউটপুট হওয়ার সম্ভাবনা 1 হওয়া দরকার। দ্বিতীয়ত, এটি কোডগল্ফ, সুতরাং আপনাকে আসলে বাইট আকারের জন্য যেতে হবে। তা ছাড়া, দুর্দান্ত
ধ্বংসাত্মক লেবু

1
টুইটারে বাইট আকারে যাবার বিষয়ে ফর্সা পয়েন্ট। আমি অনুমান করি যে আমি কলটি ইনলাইন করতে পারব p()... ওটিওহ, এটি একটি উল্লেখযোগ্যভাবে ছোট প্রোগ্রাম লিখতে শক্ত হবে যে i> 20 এর জন্য একটি সেকেন্ডের অধীনে সঠিক আউটপুট দিতে পারে (এটি বিল্ট-ইনকে কল করে "প্রতারণা করে না") প্রাথমিকতা পরীক্ষক)। :)
প্রধানমন্ত্রী 2Ring

অনেক প্রোগ্রাম একটি 33 ডিজিটের নম্বর (n: = 30) পরিচালনা করতে পারে না। ওপির সোনার মানটি কেবলমাত্র 18 ডিজিট পর্যন্ত চলে যায় এবং অন্যথায় তার দ্বারা নির্ধারিত কোনও সীমা থাকে না এমনটি ধরে নেওয়া যুক্তিসঙ্গত: এন: 30 30 যথেষ্ট যথেষ্ট আইএমও।
ব্যবহারকারী 3819867

@ পিএম 2 রিং এটি "একটি সেকেন্ডের নীচে" থাকা দরকার নেই। কোডটি যতটা সম্ভব সংক্ষিপ্ত করুন এবং গতি পুরোপুরি উপেক্ষা করুন। এটি [কোড-গল্ফ] এর আত্মা। আমার ডাউনটোটটি একবার গল্ফ হয়ে গেলে আমি একটি উঁচুতে পরিবর্তন করব।
mbomb007

প্রকৃতপক্ষে, যদি এটি সীমা পর্যন্ত সঠিক আউটপুট উত্পাদন করে, তবে উত্তরটি সম্ভাব্যতার সাথে কাজ করে।
ধ্বংসাত্মক লেবু

1

পাইথন 3, 132 বাইট

def f(x):
 k=10;p=2*(k**x//9)
 while x>1:
  for n in range(p*k,p*k+k):
   if all(n%q for q in range(2,n)):return n
  k*=10
 return 2

পারফরম্যান্সের কোনও আশা একটি ছোট বাইট গণনার জন্য ত্যাগ করা হয়েছে।


-1

জাভা, 163 বাইট

BigInteger f(int a){for(int x=1;x>0;x+=2){BigInteger b=new BigInteger(new String(new char[a]).replace("\0","2")+x);if(b.isProbablePrime(99))return b;}return null;}

পরীক্ষার কোড

    public static void main(String[] args) {
    for(int i = 2; i < 65; i++)
        System.out.println(i + " " + new Test20170105().f(i));
    }

আউটপুট:

2 223
3 2221
4 22229
5 2222219
6 22222223
7 22222223
8 222222227
9 22222222223
10 22222222223
11 2222222222243
12 22222222222229
13 22222222222229
14 222222222222227
15 222222222222222143
16 222222222222222221
17 222222222222222221
18 22222222222222222253
19 222222222222222222277
20 2222222222222222222239
21 22222222222222222222261
22 222222222222222222222283
23 2222222222222222222222237
24 22222222222222222222222219
25 222222222222222222222222239
26 2222222222222222222222222213
27 2222222222222222222222222227
28 222222222222222222222222222269
29 22222222222222222222222222222133
30 222222222222222222222222222222113
31 222222222222222222222222222222257
32 2222222222222222222222222222222243
33 22222222222222222222222222222222261
34 222222222222222222222222222222222223
35 222222222222222222222222222222222223
36 22222222222222222222222222222222222273
37 222222222222222222222222222222222222241
38 2222222222222222222222222222222222222287
39 22222222222222222222222222222222222222271
40 2222222222222222222222222222222222222222357
41 22222222222222222222222222222222222222222339
42 222222222222222222222222222222222222222222109
43 222222222222222222222222222222222222222222281
44 2222222222222222222222222222222222222222222297
45 22222222222222222222222222222222222222222222273
46 222222222222222222222222222222222222222222222253
47 2222222222222222222222222222222222222222222222219
48 22222222222222222222222222222222222222222222222219
49 2222222222222222222222222222222222222222222222222113
50 2222222222222222222222222222222222222222222222222279
51 22222222222222222222222222222222222222222222222222289
52 2222222222222222222222222222222222222222222222222222449
53 22222222222222222222222222222222222222222222222222222169
54 222222222222222222222222222222222222222222222222222222251
55 222222222222222222222222222222222222222222222222222222251
56 2222222222222222222222222222222222222222222222222222222213
57 222222222222222222222222222222222222222222222222222222222449
58 2222222222222222222222222222222222222222222222222222222222137
59 22222222222222222222222222222222222222222222222222222222222373
60 222222222222222222222222222222222222222222222222222222222222563
61 2222222222222222222222222222222222222222222222222222222222222129
62 2222222222222222222222222222222222222222222222222222222222222227
63 2222222222222222222222222222222222222222222222222222222222222227
64 2222222222222222222222222222222222222222222222222222222222222222203

582.5858 মিলিসেকেন্ডে

ব্যাখ্যা: পূর্ণসংখ্যার উপর লুপ করে সেগুলি রুট স্ট্রিংয়ের সাথে স্ট্রিং হিসাবে যুক্ত করে, যা প্রদত্ত "2 'এর স্ট্রিং এবং এটি প্রাইম কিনা তা যাচাই করে।


3
isProbablePrimeমাঝে মাঝে মিথ্যা ইতিবাচক রয়েছে । এটি উত্তরটিকে অবৈধ করে দেবে, কারণ এমন পরিস্থিতিতে রয়েছে যেখানে এটি ভুল মানটি দেয়।

ভুল হওয়ার সম্ভাবনা 2 ^ -99 এর চেয়ে কম ( ডকুমেন্টেশন দেখুন )।
SamCle88

@ স্যামক্লে ৮৮ ছোট সম্ভাবনা বা না, এটি কোনও প্রযুক্তিগত ক্ষেত্রে ভুল। isProbablePrime প্রধান যাচাইকরণের জন্য গ্রহণযোগ্য নয় এবং অন্যান্য চ্যালেঞ্জের ক্ষেত্রে তা অস্বীকার করা হয়েছে।
ম্যাজিক অক্টোপাস উরন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.