গোল্ডবাচের অনুমান


15

এমন একটি প্রোগ্রাম লিখুন যা ব্যবহারকারীকে 2 এর চেয়ে বড় পূর্ণসংখ্যার জন্য অনুরোধ করে।

গোল্ডবাচের এই ধারণাটি দেওয়া যে 2 টিরও বেশি সংখ্যক পূর্ণসংখ্যাকে দুটি প্রাইমের সমষ্টি হিসাবে প্রকাশ করা যেতে পারে, দুটি মৌলিক সংখ্যা মুদ্রণ করুন যা একত্রে যুক্ত হওয়ার পরে, অনুরোধকৃত সংখ্যার সংখ্যা সরবরাহ করে। সম্পাদনা করুন: প্রোগ্রামটি কেবল প্রাইমের একটি পেয়ার মুদ্রণ করতে হবে, সমস্ত নয়। উদাহরণ স্বরূপ:

4: 2 + 2

6: 3 + 3

8: 3 + 5

10: 5 + 5 বা 3 + 7


"কেবল এক জোড়া প্রাইম মুদ্রণ করতে হবে" এর অর্থ কি আমাদের আরও জোড়া মুদ্রণের অনুমতি দেওয়া হচ্ছে?
আইাইকো

আমি মনে করি এটি যদি আপনার কোডের দৈর্ঘ্যকে ছোট করে তবে এটি সংগঠিত করা উচিত
যৌক্তিকতা

উত্তর:


11

এপিএল, 34 বা 44 বাইট

প্রথম সংস্করণটি 34 টি প্রতীক দীর্ঘ এবং মূল একক-বাইট এপিএল অক্ষরগুলি থেকে সীমাবদ্ধ যেমন ডায়ালগ এপিএলে এখনও সমর্থনযোগ্য:

↑c/⍨n=+/¨c←,∘.,⍨v/⍨~v∊v∘.×v←1↓⍳n←⎕

ব্যাখ্যা:

                               n←⎕   ⍝ ask for a number, store as n
                          v←1↓⍳n     ⍝ generate all integers from 2 to n
                      v∘.×v          ⍝ compute the product table of any two such integers
                v/⍨~v∊               ⍝ select those that don't appear in the product table 
         c←,∘.,⍨                     ⍝ generate all possible pairs of these primes
    n=+/¨c                           ⍝ check which pairs have a sum equal to n
↑c/⍨                                 ⍝ take the first that does

দ্বিতীয় সংস্করণটি কেবলমাত্র 22 টি প্রতীক দীর্ঘ, কারণ এটি πমৌলিক সংখ্যাগুলি পরীক্ষা করার জন্য ফাংশনটি কাজে লাগায় , তবে এটি কেবল NARS2000 এ পাওয়া যায় যা ইউনিকোড ব্যবহার করে, তাই ইউসিএস -2 এ বাইট সংখ্যাটি 44 :

2⍴(⌿⍨{∧/0π⍵})(⍪,⌽)⍳⎕-1

ব্যাখ্যা:

                   ⎕    ⍝ ask for a number N
                  ⍳ -1  ⍝ generate all naturals from 1 to N-1
             (⍪,⌽)      ⍝ arrange it into a table of all pairs of naturals with sum N
     {∧/0π⍵}            ⍝ check which pairs are made of all primes
2⍴(⌿⍨       )           ⍝ return the first pair that does

উদাহরণ

(⎕: প্রম্পটটি কী কোনও সংখ্যার জন্য জিজ্ঞাসা করছে)

      2⍴(⌿⍨{∧/0π⍵})(⍪,⌽)⍳⎕-1
⎕:
      4
2 2
      2⍴(⌿⍨{∧/0π⍵})(⍪,⌽)⍳⎕-1
⎕:
      6
3 3
      2⍴(⌿⍨{∧/0π⍵})(⍪,⌽)⍳⎕-1
⎕:
      8
3 5
      2⍴(⌿⍨{∧/0π⍵})(⍪,⌽)⍳⎕-1
⎕:
      124
11 113

¯2π⍳2πnএকটি প্রধান জেনারেটর হিসাবে কাজ করবে ?
ওবেরন

@ ওবারন πঅপারেটর ঠিক কী করে ?
প্রিমো

ডায়াডিক এর সাথে πস্যুইচ করে : ¯2πxএক্সটি প্রাইম গণনা করে, ¯1πxএক্স এর চেয়ে কম প্রথম প্রাইম, এক্সের চেয়ে কম এক্স 0πxপরীক্ষা করে, এক্স এর 1πxচেয়ে প্রথম প্রাইম, 2πxএক্স এর চেয়ে কম প্রাইমের সংখ্যা, এক্স 10πxএর বিভাজকের সংখ্যা, 11πxযোগফল এক্স এর সমস্ত বিভাজকের, 12πxএবং 13πxযথাক্রমে মবিয়াস এবং সম্পূর্ণ ফাংশন। সর্বশেষে তবে সর্বনিম্ন নয়, মোনাডিকটি πxx এর প্রাথমিক গুণককে ফিরিয়ে দেয়।
ওবেরন

@ ওবারন যা NARS2000 এর সাথে নির্দিষ্ট, তাইনা? একটি আকর্ষণীয় দোভাষী বলে মনে হচ্ছে। আমি এটি চেষ্টা করে দেখুন এবং আমার উত্তরটি সংশোধন করব।
টোবিয়া

@ তোবিয়া এটা কি? তাহলে আমি দুঃখিত. আমি এটি কোথাও রেফারেন্সে দেখেছি, তবে তারা কখনই NARS2000 উল্লেখ করেনি। জানা ভাল.
ওবেরন

6

পাইথন 2, 75 71 বাইট

n=input();k=m=1;p={0}
while{n-k,k}-p:m*=k*k;k+=1;p|={m%k*k}
print n-k,k

আইডিয়নে এটি পরীক্ষা করুন ।

কিভাবে এটা কাজ করে

আমরা উইলসনের উপপাদ্যের একটি বাস্তবায়ন ব্যবহার করি :

উইলসনের উপপাদ্যটির প্রতীক

সব সময়, পরিবর্তনশীল মি k - 1 এর ফ্যাক্টরিয়াল এর বর্গক্ষেত্রের সমান ; মান আরম্ভ করা হয় 1 এবং মি মূল্য এ = 1 0! ² এর । সেট পি নিয়ে গঠিত হবে 0 বর্তমান মূল্য পর্যন্ত এবং সব মৌলিক সংখ্যার

প্রতিটি পুনরাবৃত্তিতে, আমরা প্রথমে উভয় এন - কে পরীক্ষা করি এবং অন্তর্গত পি , যা সত্য যদি এবং কেবল যদি সেট পার্থক্য {Nk, K} এবং পি খালি। যদি এটি হয় তবে শর্তটি মিথ্যা এবং লুপটি অবিরত থাকবে।

নোট করুন যে কে> 0 , এবং {N - K, ট} অবস্থার কিছু ইতিবাচক মান জন্য সন্তুষ্ট হবে N - ট (বলা যাচ্ছে যে Goldbach এর অনুমান সত্য), তাই 0 মধ্যে পি মিথ্যা positives হতে হবে না।

লুপে, আমরা কে এবং এম আপডেট করি । এর নতুন মান মি হয় মি × k² = (ট - 1)! ² এর × k² = ট ² এর! , এবং নতুন মান হয় ট + 1 টি , তাই মি = (ট - 1)! ² এর এখনো আগে ও পরে ঝুলিতে হালনাগাদ.

এর পরে, আমরা মান যোগ করার জন্য সেট ইউনিয়ন সঞ্চালন মি% ট × ট করার পি । উইলসন উপপাদ্য সম্পুরক, এই যোগ হবে 1 × ট = ট যদি মৌলিক এবং 0 × 0 = K যদি না।

লুপটি শেষ হয়ে গেলে আমরা এন - কে এবং কে এর শেষ মানগুলি মুদ্রণ করব, যা যোগফল সহ প্রাইম হবে n এর


পৃথিবীতে কীভাবে সেই প্রাথমিক উত্‍পাদনকারী অ্যালগরিদম কাজ করে?
ফাঁস নুন

@ লিকিউন আমি একটি ব্যাখ্যা যুক্ত করেছি।
ডেনিস

ওহ ... প্রতিভা।
লিকি নূনের


4

পিএইচপি - 73 বাইট

<?for(;@($n%--$$n?:$o=&$argv[1]>$$n=++$n)||${++$b}^${--$o};);echo"$b+$o";

কমান্ড লাইন আর্গুমেন্ট হিসাবে ইনপুট নেওয়া হয়।

নমুনা ব্যবহার:

$ php goldbach.php 7098
19+7079

4

GolfScript 41 33 32

~(,2>.-1%]zip{{.,2>\{\%!}+,},!}?

কমান্ড লাইন আর্গুমেন্ট গ্রহণ করে যেমন

echo "14" | ruby golfscript.rb goldbach.gs
-> [2 12]

এর সাথে ইনপুট নম্বর সম্পর্কিত সমস্ত প্রাসঙ্গিক পার্টিশন সন্ধান করে:

(,2>.-1%]zip  #If only zip were a one-character command!  It is so often useful.

এবং তারপরে প্রথম পার্টিশনটি সন্ধান করে যেখানে কোনও সংখ্যা প্রধান নয়:

{np,!}? #For each partition, filter down to elements that are not prime, and only accept if there are no such results (since [] is falsey).

সম্মিলিত-চেকিং ব্লকটি যেখানে np:

{.,2>\{\%!}+,}

এই ব্লকটি সমস্ত সংখ্যায় ফিল্টার করে যা প্রদত্ত সংখ্যাকে সমানভাবে ভাগ করে দেয়। যদি এই জাতীয় কোনও সংখ্যা না থাকে (সুতরাং সংখ্যাটি প্রাথমিক), ফলাফলটি []যা গল্ফস্ক্রিপ্টে মিথ্যা।


3

পার্ল 6: 69

$/=get;for grep &is-prime,^$/ {exit say $_,$_-$/ if ($/-$_).is-prime}

3

আর, 170 112 83 টি অক্ষর

a=scan();b=2:a;p=b[rowSums(!outer(b,b,`%%`))<2];q=p[(a-p)%in%p][1];cat(a,":",q,a-q)

ইন্ডেন্টযুক্ত:

a=scan() #Take user input as a numeric
b=2:a
p=b[rowSums(!outer(b,b,`%%`))<2] #Find all primes from 2 to user input
q=p[(a-p)%in%p][1] #Check which a-p also belong to p and takes the first one
cat(a,":",q,a-q)

ব্যবহার:

> a=scan();b=2:a;p=b[rowSums(!outer(b,b,`%%`))<2];q=p[(a-p)%in%p][1];cat(a,":",q,a-q)
1: 72
2: 
Read 1 item
72 : 5 67 

উত্তরসূরির জন্য 112 টি অক্ষরে পুরানো সমাধান

a=scan();b=2:a;p=b[rowSums(!outer(b,b,`%%`))<2];w=which(outer(p,p,`+`)==a,T);cat(a,":",p[w[1,1]],p[w[1,2]])

ইন্ডেন্টযুক্ত:

a=scan()
b=2:a
p=b[rowSums(!outer(b,b,`%%`))<2]
w=which(outer(p,p,`+`)==a,T) #Find the index of valid combinations
cat(a,":",p[w[1,1]],p[w[1,2]]) #Prints the first valid combination

এটি পাগল এবং জেনিয়াল উভয়ই !!
টমাস

3

পাইথন - 107

মূলত নিউট্রিয়া উত্তরের দ্বিতীয় অংশের উন্নতি (আমি এটি ২.7 এ চালিয়েছি তবে আমি মনে করি এটিও 3.x এর জন্য কাজ করা উচিত)

p=lambda x:all(x%i!=0 for i in range(2,x))
n=input()
for i in range(2,n-1):
    if p(i)&p(n-i): print i,n-i

নতুন লাইনগুলি, এবং স্পেসগুলি :বাধ্যতামূলক হওয়ার পরে ?
এমনিপ

ট্যাবটি কোনও স্পেসে হ্রাস করা যেতে পারে, এবং মুদ্রণটি সরিয়ে ফেলার আগে স্থানটি (4 বাইটে শেভ করে)।
ক্লিস্টিক

3

জাভাস্ক্রিপ্ট (ES6) (রেজেক্স), 105

a=/^(xx+?)(?!(xx+)\2+$)x*(?=\1$)(?!(xx+)\3+$)/.exec("x".repeat(prompt()));alert(a[1].length+"+"+a[0].length)

এখন আপনার একটি রেজেক্স রয়েছে যা গোল্ডব্যাক অনুমানের পরীক্ষা করে, যার বিশেষ বৈশিষ্ট্যগুলির (বেসিক ব্যাক-রেফারেন্স সমর্থন, ইতিবাচক এবং নেতিবাচক চেহারা-এগিয়ে) কম প্রয়োজন।

এটি ব্যবহার করে String.prototype.repeat(), যা ইকমাস্ক্রিপ্ট 6th ষ্ঠ সংস্করণের প্রস্তাবের অংশ। বর্তমানে, এই কোডটি কেবল ফায়ারফক্সে কাজ করে।

রেগেক্সের সাথে কাজ করার সময় আমার কাছে আরও ভাল একটি ভাষা দরকার যা সংক্ষিপ্ত কমান্ড ...


2

স্কালা, 286 192 172 148 অক্ষর

দ্রুত নয় তবে এটি কাজ করে। 10 এর জন্য সোনারবাচ জোড়গুলির তালিকা পেতে জি (10) কে কল করুন।

def g(n:Int)={def p(n:Int,f:Int=2):Boolean=f>n/2||n%f!=0&&p(n,f+1)
s"$n : "+(for(i<-2 to n/2;j=n-i if p(i)&&p(j))yield s"$i + $j").mkString(" or ")}

সি ++ তে রূপান্তরটি সোজা is


2

সি - 139 129 টি অক্ষর

a,b;i(x,y){return x>y?x%y?i(x,y+1):0:x>1;}main(){scanf("%i",&a);for(b=a/2;b-->1;)i(b,2)&&i(a-
b,2)&&printf("%i:%i+%i\n",a,b,a-b);}

আপনি intআপনার ক্রিয়াকলাপের ঘোষণাগুলি সরিয়ে 8 টি অক্ষর শেভ করতে পারেন i। আপনি এটিকে অপসারণ করে ifএবং আরও একটি ডাবল এম্পারস্যান্ড যুক্ত করে আরও 2 টি অক্ষর সংরক্ষণ করতে পারেন :i(b,2)&&i(a-b,2)&&printf(...)
জোশ

ধন্যবাদ! ভেবে দেখিনি &&। (আমি কখনই সাইলেন্সিং টাইপ করার পক্ষে অভ্যস্ত হবো না ...)
ওবারন

আমি নেস্টেড টেরেনারি আপনার ব্যবহার পছন্দ করি love
জোশ

2

newLISP - 169 148 অক্ষর

(define(p n)(=(length(factor n))1))
(define(g n)(when(even? n)(for(i 3 n 2)
(and(p i)(p(- n i))(println n {: } i { }(- n i))))))
(g(int(read-line)))

এটি চালানোর জন্য কোড অন্তর্ভুক্ত। ফলাফলগুলি অত্যধিক উদার ...

72: 5 67
72: 11 61
72: 13 59
72: 19 53
72: 29 43
72: 31 41
72: 41 31
72: 43 29
72: 53 19
72: 59 13
72: 61 11
72: 67 5

2

Ageষি, 60

স্কোরের মতো এবং পুনরায় সমাধানের সমাধানটি একই রকম , তবে আমি মনে করি এটি পোস্ট করার পক্ষে যথেষ্ট আলাদা।

i=n=input()
while not{i,n-i}<set(primes(n)):i-=1
print i,n-i

2

সেজে , 65 62

n=input()
i=0
p=is_prime
while p(i)*p(n-i)==0:i+=1
print i,n-i

উপরের ফাইলটিতে goldbach.sageএটি সেমে টার্মিনালে চলমান দিয়ে চালিত করুন:

sage: %runfile goldbach.sage 

এই p=is_primeধারণাটির জন্য @ বুথবিকে ধন্যবাদ ।


আপনি সেট করে 62 এ নেমে যেতে পারেন p=is_prime
বুথবাই

2

হাস্কেল, 97 সি

g n=head[(a,b)|let q=p n,a<-q,b<-q,a+b==n]
p n=filter c[2..n]
c p=null[x|x<-[2..p-1],p`mod`x==0]

ব্যাখ্যা:

  • gএটি "গোল্ডব্যাচ" ফাংশন। কলিং g nআপনাকে প্রাইমগুলির জুটি দেয় যা সংযোজন করে n
  • pএমন একটি ফাংশন যা প্রাইমগুলির চেয়ে কম তালিকা তৈরি করে n
  • cসংজ্ঞায়িত করতে ব্যবহৃত প্রধান পরীক্ষক ফাংশন p

উদাহরণ রান:

*Main> g 4
(2,2)
*Main> g 6
(3,3)
*Main> g 8
(3,5)
*Main> g 10
(3,7)
*Main> g 12
(5,7)
*Main> map g [4,6..100]
[(2,2),(3,3),(3,5),(3,7),(5,7),(3,11),(3,13),(5,13),(3,17),(3,19),(5,19),(3,23),(5,23),(7,23),(3,29),(3,31),(5,31),(7,31),(3,37),(5,37),(3,41),(3,43),(5,43),(3,47),(5,47),(7,47),(3,53),(5,53),(7,53),(3,59),(3,61),(5,61),(7,61),(3,67),(5,67),(3,71),(3,73),(5,73),(7,73),(3,79),(5,79),(3,83),(5,83),(7,83),(3,89),(5,89),(7,89),(19,79),(3,97)]

2

গণিত 56

এটি ইনপুট পূর্ণসংখ্যার জন্য সমস্ত সমাধান প্রদান করে।

Select[Tuples[Prime@Range@PrimePi[n = Input[]], 2], Tr@# == n &]

উদাহরণস্বরূপ, যখন 1298 ইনপুট হয় ...

{, 7, 1291}, {19, 1279}, {61, 1237}, {67, 1231}, {97, 1201}, {127, 1171}, {181, 1117}, {211, 1087}, { 229, 1069}, {277, 1021}, {307, 991}, {331, 967}, {379, 919}, {421, 877}, {439, 859}, {487, 811}, {541, 757}, {547, 751}, {571, 727}, {607, 691}, {691, 607}, {727, 571}, {751, 547}, {757, 541}, {811, 487 , {859, 439}, {877, 421}, {919, 379}, {967, 331}, {991, 307}, 21 1021, 277}, {1069, 229}, {1087, 211}, { 1117, 181}, {1171, 127}, 1201, 97}, {1231, 67}, {1237, 61}, 79 1279, 19}, {1291, 7}

লিখিত হিসাবে, এটি প্রতিটি সমাধান দুটিবার ফেরত দেয়।

Union[Sort/@ %]

{, 7, 1291}, {19, 1279}, {61, 1237}, {67, 1231}, {97, 1201}, {127, 1171}, {181, 1117}, {211, 1087}, { 229, 1069}, {277, 1021}, {307, 991}, {331, 967}, {379, 919}, {421, 877}, {439, 859}, {487, 811}, {541, 757}, {547, 751}, {571, 727}, {607, 691}


ইনপুট 2, একটি ওরাকল জিজ্ঞাসা করুন যদি এটি বন্ধ হয়ে যায়, যমজ প্রাইম অনুমানটি প্রমাণ / প্রমাণ করুন, জিতুন
ফিলিপ্যাক

1

জুলিয়া, Cha২ টি চার্স (প্রম্পট সহ 85)

julia> g(n)=collect(filter((x)->sum(x)==n,combinations(primes(n),2)))
g (generic function with 1 method)

julia> g(88)
4-element Array{Array{Int64,1},1}:
 [5,83] 
 [17,71]
 [29,59]
 [41,47]

এটি ব্যবহারকারীকে অনুরোধ করে না (প্রয়োজনীয় হিসাবে), না?
মাঝামাঝি

না, এটি খেয়াল করেনি। এটি এখনই অনেক চরিত্র যুক্ত করবে জুলিয়া। g(int(readline(STDIN)))
gggg

1

জিটিবি , ৩১

আপনার টিআই -৪৪ ক্যালকুলেটরটির জন্য

`A:.5A→B@%;A,4)4$~B+1,B-1#~B,B&

কোনও প্রাইম বিল্ট-ইন নেই।

উদাহরণ রান

?4
               2
               2
?6
               3
               3
?8
               3
               5
?10
               5
               5

1

জাভাস্ক্রিপ্ট, 139 137 136

a=prompt();function b(n){for(i=2;i<n;i++)if(n%i<1)return;return 1}for(c=2,r=1;c<a&&r;c++)if(b(c)&&b(a-c))alert(a+": "+c+" + "+(a-c)),r=0

আমি মনে করি আপনি return;পরিবর্তে আরও দুটি চর return 0;
ছাঁটাই

1

পাইথন 3 - 150 143 টি অক্ষর

পুরানো সংস্করণ (150 টি অক্ষর):

p=lambda n:0 in[n % i for i in range(2,n)]
n=int(input())
[print('%d+%d'%(a, b))for b in range(2,n)for a in range(2,n)if not(a+b!=n or p(a) or p(b))]

নতুন সংস্করণ (প্রোগ্রামফক্সকে ধন্যবাদ):

p=lambda n:0 in[n%i for i in range(2,n)]
n=int(input())
[print('%d+%d'%(a,b))for b in range(2,n)for a in range(2,n)if not((a+b!=n)|p(a)|p(b))]

এটি প্রতিটি সংমিশ্রণ মুদ্রণ করে, উদাহরণস্বরূপ:
4 2 + 2
10 7 + 3 5 + 5 3 + 7


|বুলিয়ান টাইপ সহ নিরাপদে ব্যবহার করা যেতে পারে, তাই(a+b!=n)|p(a)|p(b)
n̴̖̋h̷͉̃a̷̭̿h̸̡̅ẗ̵̨́d̷̰̀ĥ̷̳

এমনকি ছোট করে ব্যবহার করে: print([(a,b)for b in range(2,n)for a in range(2,n)if not((a+b!=n)|p(a)|p(b))])(টিপলগুলির একটি তালিকা মুদ্রণ করে, যার যোগফল n)। 8 বাইট সঞ্চয়
এখনও 25:55

এছাড়াও ব্যবহার r=range(2,n)এবং রেফারেন্সিং rআরও কয়েকটি সঞ্চয় করে ।
agtoever

1

প্রশ্ন [১১6 অক্ষর]

y where all each{{2=count where 0=(x mod)each til x+1}each x}each y:{a where x=sum each a:a cross a:til x}"I"$read0 0

প্রাইম নম্বর খুঁজতে কোনও ইনবিল্ট ফাংশন নেই।

ইনপুট

72

আউটপুট

5  67
11 61
13 59
19 53
29 43
31 41
41 31
43 29
53 19
59 13
61 11
67 5

1

পাইথন - 206

পার্টিতে কিছুটা দেরি হলেও আমি আমার গল্ফ দক্ষতা অনুশীলন করছি।

এই প্রশ্নটি পাওয়ার আগে আমি আসলে কোড করেছিলাম! সুতরাং খনিতে পাইথনের অন্যান্য দ্রবণগুলি যে সুন্দর ল্যাম্বদা ব্যবহার করে তা অন্তর্ভুক্ত করে না।

import math
def p(n):
    if n%2==0&n>2:return False
    for i in range(3,n):
        if n%i==0:return False
    return True 
X=int(input())
for i in range(2,X):
    if p(i)&p(X-i):print i,X-i;break

1

জে - 35 32 চর

"ব্যবহারকারীকে প্রম্পট করুন" হ'ল প্রতিটি জে গল্ফারের নিষিদ্ধ। আমার সমস্ত উপার্জিত অক্ষর আছে!

p:(n,n)#:i.&n,+/~p:i.n=:".1!:1]1

ব্যাখ্যা:

  • ".1!:1]1- 1!:1ইনপুট (ফাইল হ্যান্ডেল 1) থেকে স্ট্রিং ( ) এ পড়ুন এবং এটিকে একটি সংখ্যায় ( ".) রূপান্তর করুন ।
  • p:i.n=:- এই সংখ্যাটি ভেরিয়েবলের জন্য বরাদ্দ করুন nএবং তারপরে প্রথম nপ্রাইমগুলি নিন।
  • +/~- nপ্রশস্ত এবং nউচ্চতর একটি সংযোজন সারণী তৈরি করুন ।
  • i.&n,- টেবিলটিকে একক তালিকায় পরিণত করুন এবং তারপরে প্রথম উপস্থিতির সূচকটি সন্ধান করুন n, যা গোল্ডবাচের অনুমানটি সত্য হলে বিদ্যমান exists
  • p:(n,n)#: - সূচি থেকে সারি এবং কলামটি পুনরুদ্ধার করুন এবং তার সাথে সম্পর্কিত প্রাইমগুলি নিন।

ব্যবহার:

   p:(n,n)#:i.&n,+/~p:i.n=:".1!:1]1
666
5 661
   p:(n,n)#:i.&n,+/~p:i.n=:".1!:1]1
1024
3 1021

প্রম্পটটির প্রয়োজন না থাকলে এখানে একটি 25 টি চরিত্র ক্রিয়াটি রয়েছে:

(,~p:@#:]i.~&,+/~@:p:@i.)

1

জেলি , 8 বাইট (প্রতিদ্বন্দ্বী)

_ÆRfÆR.ị

এটি অনলাইন চেষ্টা করুন! বা সমস্ত পরীক্ষার কেস যাচাই করুন

কিভাবে এটা কাজ করে

_ÆRfÆR.ị  Main link. Argument: n (integer)

 ÆR       Prime range; yield all primes in [1, ..., n].
_         Subtract all primes from n.
   fÆR    Filter; intersect the list of differences with the prime range.
      .ị  At-index 0.5; yield the last and first element.

1

জুলিয়া, 50 49 বাইট

~=primes;n=ARGS[]|>int
(n-~n)∩~n|>extrema|>show

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

যদি কোনও ফাংশন গ্রহণযোগ্য হয়, কোডটি 32 বাইটে সংক্ষিপ্ত করা যেতে পারে :

~=primes
!n=(n-~n)∩~n|>extrema

কিভাবে এটা কাজ করে

~=primesঅন্তর্নির্মিত প্রাইমস ফাংশনের জন্য একটি উপাধি তৈরি করে যা তার যুক্তি পর্যন্ত সমস্ত মৌলিক সংখ্যার একটি তালিকা প্রদান করে। n=ARGS[]|>intপ্রথম কমান্ড-লাইন আর্গুমেন্টটিকে এন হিসাবে সংরক্ষণ করে পার্স করে ।

প্রাইমগুলির উপযুক্ত জোড় খুঁজে পাওয়ার জন্য, আমরা প্রথমে পূর্বোক্ত প্রাইম রেঞ্জের সাথে গণনা করি ~n। তারপরে, n-~nএই প্রাইমগুলির সমস্ত পার্থক্য এবং এন দেয়

ছেদ করে (মূল পরিসীমাটি দিয়েই ফলাফলটি করে আমরা নিশ্চিত করে রাখি যে বাকী প্রাইমগুলি পি- এর মতো - এন প্রাইম।

পরিশেষে, extremaছেদটি সর্বনিম্ন এবং সর্বোচ্চ প্রধান নেয়, সুতরাং তাদের যোগফল অবশ্যই n হবে


0

এসকিউএল, 295 284

পোস্টগ্র্যাস্কল এ:

create function c(c int) returns table (n int, m int) as $$ 
with recursive i(n) as
(select 2 union all select n+1 from i where n<c), 
p as (select * from i a where not exists 
(select * from i b where a.n!=b.n and mod(a.n,b.n)=0))
select * from p a, p b where a.n+b.n=c 
$$ language sql;

এটি যদি অর্ধেক জায়গাতে করতে সক্ষম হয় তবে এটি যদি "পুনরাবৃত্তিতে কোনও বাম বাহির যোগদান না করা", "পুনরাবৃত্তিতে কোনও উপশম" না হয় ...

এখানে ফলাফল:

postgres=# select c(10);
   c   
-------
 (3,7)
 (5,5)
 (7,3)
(3 rows)

postgres=# select c(88);
   c    
---------
 (5,83)
 (17,71)
 (29,59)
 (41,47)
 (47,41)
 (59,29)
 (71,17)
 (83,5)
(8 rows)

0

ব্যাচ - 266

@echo off&setLocal enableDelayedExpansion&for /L %%a in (2,1,%1)do (set/aa=%%a-1&set c=&for /L %%b in (2,1,!a!)do set/ab=%%a%%%%b&if !b!==0 set c=1
if !c! NEQ 1 set l=!l!%%a,)&for %%c in (!l!)do for %%d in (!l!)do set/ad=%%c+%%d&if !d!==%1 set o=%%c + %%d
echo !o!

ঝরঝরে করে সেট করা -

@echo off
setLocal enableDelayedExpansion
for /L %%a in (2,1,%1) do (
    set /a a=%%a-1
    set c=
    for /L %%b in (2,1,!a!) do (
        set /a b=%%a%%%%b
        if !b!==0 set c=1
    )
    if !c! NEQ 1 set l=!l!%%a,
)
for %%c in (!l!) do for %%d in (!l!) do (
    set /a d=%%c+%%d
    if !d!==%1 set o=%%c + %%d
)
echo !o!

0

পার্ল 5, 58 বাইট

57, প্লাস 1 এর জন্য -nE

/^(11+?)(?!(11+)\2+$)1*(?=\1$)(?!(11+)\3+$)/;say for$1,$&

ইনপুট এবং আউটপুট অবিচ্ছিন্ন। উদাহরণ:

$ perl -nE'/^(11+?)(?!(11+)\2+$)1*(?=\1$)(?!(11+)\3+$)/;say for$1,$&'
1111111111
111
1111111

হাট-টিপ।


0

ওরাকল এসকিউএল 11.2, 202 বাইট

WITH v(x,y,s)AS(SELECT LEVEL,LEVEL,0 FROM DUAL CONNECT BY LEVEL<=:1 UNION ALL SELECT x,y-1,s+SIGN(MOD(x,y))FROM v WHERE y>1),p AS(SELECT x FROM v WHERE x-s=2)SELECT a.x,b.x FROM p a,p b WHERE:1=a.x+b.x;   

আন golfed

WITH v(x,y,s) AS
(
  SELECT LEVEL,LEVEL,0 FROM DUAL CONNECT BY LEVEL<=:1 
  UNION ALL 
  SELECT x,y-1,s+SIGN(MOD(x,y))FROM v WHERE y>1
)
,p AS (SELECT x FROM v WHERE x-s=2)
SELECT a.x,b.x 
FROM p a,p b 
WHERE :1=a.x+b.x;   

0

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

b=lambda x:all(x%y for y in range(2,x))
g=lambda x,i=2:((i,x-i)if b(i)&b(x-i)else g(x,i+1))if(i<x)else 0

বি (এক্স) এক্স এর একটি প্রাথমিক পরীক্ষা, এবং জি (এক্স) দুটি ফিট প্রাইমগুলি ফিট করার জন্য সংখ্যার মাধ্যমে পুনরাবৃত্তি করে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.