গোল্ডবাচের পার্টিশন বাড়ানো হচ্ছে


9

গোল্ডবাচের অনুমানে বলা হয়েছে:

2 এর চেয়ে বেশি হওয়া প্রতিটি সমান সংখ্যা দুটি প্রাইমসের যোগফল।

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

কার্য

একটি এমনকি পূর্ণসংখ্যার এন> ২ দেওয়া , এটি নির্ধারণ করুন যে এন গোল্ডব্যাচ পার্টিশনটি বাড়ছে কিনা এবং দুটি অনন্য মান আউটপুট দেয়, একটি এটি হয় এবং তা না হলে একটি।

এই , সুতরাং আপনার উত্স কোডে বাইট সংখ্যা হ্রাস করার লক্ষ্য করা উচিত।

OEIS A025018



এটি ভাল প্রশ্ন, এটি বুঝতে অসুবিধা হয়। শব্দটি সহজ করার জন্য আমি এটি সম্পাদনা করেছি। দয়া করে এটি পরীক্ষা করে দেখুন এবং যদি সমস্ত কিছু সঠিক হয় তবে পরিবর্তনগুলি প্রয়োগ করুন।
Новиков

1
@ ЕвгенийНовиков আমি আপনার সম্পাদনাটি মূলটির চেয়ে আরও বিভ্রান্ত দেখতে পেয়েছি। আমি তা প্রত্যাখ্যান করেছি। সম্ভবত আমরা এটিকে আরও পরিষ্কার করার একটি উপায় নিয়ে আলোচনা করতে পারি
অ্যাডহক গার্ফ হান্টার

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

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

উত্তর:


5

জেলি , 12 বাইট

ÆRðfạṂ
Ç€M⁼W

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

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

Ç€M⁼W   Main link. Argument: n

Ç€      Map the helper link over [1, ..., n].
  M     Get all indices of the maximum.
    W   Wrap; yield [n].
   ⁼    Test the results to both sides for equality.


ÆRðfạṂ  Helper link. Argument: k

ÆR      Prime range; get all primes in R := [1, ..., k].
  ð     Begin a dyadic chain with arguments R and k.
    ạ   Absolute difference; yield k-p for each p in R.
   f    Filter; keep the q in R such that q = k-p for some p in R.
     Ṃ  Take the minimum.
        This yields 0 if the array is empty.

4

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

for(;$n++<$a=$argn;$i-1?:$p[]=$n)for($i=$n;--$i&&$n%$i;);foreach($p as$x)foreach($p as$y)if(!$r[$z=$x+$y]){$r[$z]=$x;$l[]=$z<$a?$x:0;};echo$r[$a]>max($l);

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

সম্প্রসারিত

for(;$n++<$a=$argn;$i-1?:$p[]=$n) # loop through all integers till input if is prime add to array 
  for($i=$n;--$i&&$n%$i;);
foreach($p as$x) #loop through prime array
  foreach($p as$y) #loop through prime array 
    if(!$r[$z=$x+$y]){
      $r[$z]=$x; # add only one time lower value for a sum of $x+$y 
      $l[]=$z<$a?$x:0;}; # add lower value if sum is lower then input
echo$r[$a]>max($l); # Output 1 if lower value for sum of input is greater then all lower values of all numbers under input

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


3

জাভাস্ক্রিপ্ট (ES6), 135 বাইট

জার্গের পিএইচপি উত্তর হিসাবে অনুরূপ যুক্তি ব্যবহার করে ।

(n,P=[...Array(n).keys()].filter(n=>(p=n=>n%--x?p(n):x==1)(x=n)))=>P.map(p=>P.map(q=>a[q+=p]=a[q]||(m=q<n&&p>m?p:m,p)),a=[m=0])&&a[n]>m

ডেমো


2

পাইথন 3: 156 151 142 138 136 128 বাইট

r=range
m=lambda n:min(x for x in r(2,n+1)if all(o%i for o in[x,n-x]for i in r(2,o)))
f=lambda n:m(n)>max(map(m,r(2,n,2)))or n<5

(ওপিকে ধন্যবাদ)

(@ রডকে ধন্যবাদ) (আবার) (এবং আবার)


@ ওলমান আপনার পছন্দ হয়েছে?
এএনডিল

@ রড যেহেতু maxকী প্রয়োগ করার পরে সর্বাধিক মান সহ মূল্যের সাথে রিটার্ন উপাদান রয়েছে, আমাকে ফাংশন অ্যাপ্লিকেশনটি যুক্ত করতে হয়েছিল তবে তা আরও ছোট।
এএনডিল

@ রড এবং আমি আপনার পরামর্শগুলি গ্রহণ করতে পারছি না rangeকারণ nএটি ভিতরে আবদ্ধ lambda
এএনডিল

@ জড়িত প্রকৃতপক্ষে, তবে সর্বোচ্চের জন্য আপনি ব্যবহার করতে পারেনmax(map(m,r[::2]))
রড

1
আপনার নামকরণের দরকার নেই fএবং এভাবে অপসারণ করে 2 বাইট সংরক্ষণ করতে পারেন f=
অ্যাডহক গার্ফ হান্টার

1

পাইথন 3: 204 196 বাইট

বাইটস সংরক্ষণ করার জন্য ধন্যবাদ: ওলম ম্যান

from itertools import*
m=lambda g:min([x for x in product([n for n in range(2,g)if all(n%i for i in range(2,n))],repeat=2)if sum(x)==g][0])
i=lambda g:1if all(m(g)>m(x)for x in range(4,g,2))else 0

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


2
কয়েক টিপস, মত সবচেয়ে builtin ফাংশন minএবং allআর্গুমেন্ট হিসাবে জেনারেটর নিতে পারেন, এর মানে হল min([...])থেকে সংক্ষিপ্ত করা যেতে পারে min(...)এবং সমস্ত সঙ্গে একই। আপনি কিছু ফাঁকা জায়গা থেকেও মুক্তি পেতে পারেন, বিশেষত স্পেস এবং import *ব্রেসগুলির পরে কোনও স্থান, আমি দেখতে পাচ্ছি যে আপনার একটির পরে রয়েছে range(g)এবং এর আগেও রয়েছে [i for i in ..., প্রয়োজনও নেই।
অ্যাডহক গার্ফ হান্টার

^ সেটা অসাধারণ, আমি তা জানতাম না
bendl

এছাড়াও আপনি এটিকে পরিবর্তন করে আপনার প্রাথমিক চেকটি আরও খাটো করে তুলতে পারেন all(n%i for i in range(2,g))তবে আপনাকে পরিবর্তন range(g)করতে হবে range(1,g)কারণ এটি 1 এ একটি মিথ্যা পজিটিভ দেয়
অ্যাডহক গার্ফ হান্টার
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.