প্রাইম সংজ্ঞায়নের বিভিন্ন উপায়


32

মূল সংখ্যাগুলির আমার প্রিয় সংজ্ঞাগুলির একটি নিম্নরূপ:

  • 2 হ'ল ক্ষুদ্রতম প্রধানমন্ত্রী।

  • 2 এর চেয়ে বড় সংখ্যাগুলি প্রধান হয় যদি তারা কোনও ছোট প্রধান দ্বারা বিভাজ্য না হয়।

তবে এই সংজ্ঞাটি নির্বিচারে মনে হয়, কেন 2? অন্য কিছু নম্বর কেন নয়? আচ্ছা চেষ্টা করুন কিছু অন্যান্য সংখ্যা এন-প্রাইমকে এমন সংজ্ঞায়িত করবে

  • n হ'ল ক্ষুদ্রতম এন-প্রাইম।

  • N এর চেয়ে বড় সংখ্যাগুলি এন-প্রাইম হয় যদি তারা একটি ছোট এন-প্রাইম দ্বারা বিভাজ্য না হয়।

কার্য

এখানে কাজটি হ'ল একটি প্রোগ্রাম লিখুন যা দুটি ইনপুট গ্রহণ করে, একটি ধনাত্মক পূর্ণসংখ্যা এন এবং ধনাত্মক পূর্ণসংখ্যা । তখনই সিদ্ধান্ত নেবে যদি একটি হয় এন -prime। আপনার প্রোগ্রামটির "হ্যাঁ, এটি এন-প্রাইম" এবং "না, এটি এন-প্রাইম নয়" এর জন্য দুটি স্বতন্ত্র মান আউটপুট করা উচিত।

এটি একটি কোড-গল্ফ প্রশ্ন তাই কম বাইট ভাল হওয়ার সাথে উত্তরগুলি বাইটে স্কোর করা হবে।

টেস্ট

এন = 2 থেকে এন = 12 এর জন্য প্রথম 31 টি প্রাথমিকের তালিকা এখানে রয়েছে (1 কেবলমাত্র 1 টি প্রথম সংখ্যা)

n=2: [2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127]
n=3: [3,4,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127]
n=4: [4,5,6,7,9,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113]
n=5: [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,101,103,107,109,113]
n=6: [6,7,8,9,10,11,13,15,17,19,23,25,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107]
n=7: [7,8,9,10,11,12,13,15,17,19,23,25,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107]
n=8: [8,9,10,11,12,13,14,15,17,19,21,23,25,29,31,35,37,41,43,47,49,53,59,61,67,71,73,79,83,89,97]
n=9: [9,10,11,12,13,14,15,16,17,19,21,23,25,29,31,35,37,41,43,47,49,53,59,61,67,71,73,79,83,89,97]
n=10: [10,11,12,13,14,15,16,17,18,19,21,23,25,27,29,31,35,37,41,43,47,49,53,59,61,67,71,73,79,83,89]
n=11: [11,12,13,14,15,16,17,18,19,20,21,23,25,27,29,31,35,37,41,43,47,49,53,59,61,67,71,73,79,83,89]
n=12: [12,13,14,15,16,17,18,19,20,21,22,23,25,27,29,31,33,35,37,41,43,47,49,53,55,59,61,67,71,73,77]

4
n=6, a=15এটি প্রথম আকর্ষণীয় পরীক্ষার কেস।
নিল

6
এটি প্রথম স্থান যেখানে অ-প্যাটার্নটি "a n-prime iff n≤a <2n বা (a≥2n এবং একটি প্রধান)" ভেঙে যায়।
মিশা লাভরভ

2
"2 এর চেয়ে বড় সংখ্যাগুলি প্রধান হয় যদি তারা কোনও ছোট প্রধান দ্বারা বিভাজ্য না হয়" " - এই সংজ্ঞাটি যে কোনও সংখ্যাকে প্রধান হতে দেয়। আপনি যদি ইফএফের পরিবর্তে বলতে চান তবে ?

5
@ দ্য পাইরেটবে আমি এই শব্দটির সঠিক গাণিতিক অনুভূতি বোঝাতে চাইছি না যদি। আমি এটি ছেড়ে যাচ্ছি।
গম উইজার্ড

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

উত্তর:


9

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

n!a=not$any(n!)[x|x<-[n..a-1],mod a x<1]||n>a

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

আমি একটি সুন্দর পুনরাবৃত্তি ফাংশন সংজ্ঞায়িত (!):

n!aaপরিসরে [n,a-1], এর কোনও ফ্যাক্টর একটি হয় কিনা তা পরীক্ষা করে n-prime। তারপরে এটি ফলাফলটিকে অবহেলা করে। এটিও তা নিশ্চিত করেn>a



@ হোয়াইট উইজার্ড আমি আশা করছিলাম যে কেউ সংক্ষিপ্ত সমাধান পোস্ট করবে :)
এইচ.পি.উইজ ২


4

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

lambda i,k:(i>k)<all(k%r for r in range(i,k))

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

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

এটি ইনপুট হিসাবে দুটি পূর্ণসংখ্যার গ্রহণ করে, আমি এবং কেK ≥ i হলে প্রথমে পরীক্ষা করে দেখুন । তারপর পরিসীমা উত্পন্ন ) [আমি ট এবং পূর্ণসংখ্যা প্রত্যেকের জন্য এন , এই সীমার মধ্যে চেক যদি এন coprime হয় । যদি উভয় শর্ত পূরণ হয়, তবে কে একটি আই- প্রাইম।


আপনি &পরিবর্তে andএবং >=iপরিবর্তে ব্যবহার করতে পারবেন না >i-1?
গম উইজার্ড

@ ওয়েট উইজার্ড >=i এখনও 4 বাইট (স্থানের কারণে)।
নিল

@ নীল আপনি যদি আপনার কাছে পরিবর্তন করেন &তবে জায়গার দরকার নেই।
গম উইজার্ড


4

আর , 44 37 বাইট

function(a,n)a==n|a>n&all(a%%n:(a-1))

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

-7 বাইট জিউসেপ্পিকে ধন্যবাদ

রিটার্নস TRUEযদি

  • aসমান nবা ( a==n|)
  • aএর থেকে বড় n এবং ( a>n&) প্রত্যেক সংখ্যার জন্য থেকে nথেকে a-1, aসমানভাবে দ্বারা বিভাজ্য নয় ( all(a%%n:(a-1)))

রিটার্নস FALSEঅন্যথায়


পিপিসিজিতে আপনাকে স্বাগতম! দুর্দান্ত প্রথম উত্তর!
ফ্যানটাসি

3

জে, 30 বাইট

>:*(-{1=[:+/0=[:|/~]+i.@[)^:>:

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

বাম আর্গুমেন্টে ডান আর্গুমেন্ট এবং মানটি হিসাবে পরীক্ষা করতে মান হিসাবে শুরু করে।

আমি মূলত গোলযোগ করেছি এবং প্রারম্ভিক প্রাথমিকের চেয়ে কম বাম যুক্তিগুলির জন্য অ্যাকাউন্ট করি না। আমার সমাধানের দৈর্ঘ্য নিয়ে আমি এখন কিছুটা অসন্তুষ্ট।

ব্যাখ্যা

দিন xবাম যুক্তি (যাচাই মান) হতে হবে এবং yঅধিকার যুক্তি (শুরু মৌলিক) হতে।

>:*(-{1=[:+/0=[:|/~]+i.@[)^:>:
                          ^:>:  Execute left argument if x >= y
                     i.@[         Create range [0..x]
                   ]+             Add y to it (range now: [y..x+y])
                |/~               Form table of residues
            0=                    Equate each element to 0
          +/                      Sum columns
      1=                          Equate to 1
    -{                            Take the element at position x-y
>:*                             Multiply by result of x >= y

নোট

অবস্থানটিতে x-yথাকা উপাদানটি আদিমতার পরীক্ষার ফলাফল x(যেহেতু আমরা yআসল সীমার সাথে যুক্ত করেছি)।

দ্বারা গুণিত করা x >: yনিশ্চিত করে যে আমরা এর চেয়ে কম ক্ষেত্রে একটি মিথ্যা মান ( 0) পাই ।xy


3

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

বাক্য গঠন সিনট্যাক্সে ইনপুট নেয় (n)(a)। একটি বুলিয়ান ফেরত দেয়।

n=>p=(a,k=a)=>k%--a?p(a,k):a<n

ডেমো


3

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

H.PWiz এর ধারণার জন্য 2 বাইট সংরক্ষণ করা হয়েছে যা ফ্ল্যাওয়ারের উত্তর থেকে নেওয়া হয়েছিল

n!a=[1]==[1|0<-mod a<$>[n..a]]

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

ঠিক আছে যেহেতু এটি বেশ কিছুক্ষণ হয়ে গেছে, এবং এখন পর্যন্ত একমাত্র হাস্কেল উত্তর 45 টি বাইট, আমি নিজের উত্তর পোস্ট করার সিদ্ধান্ত নিয়েছি।

ব্যাখ্যা

এই ফাংশনটি চেক মধ্যে শুধুমাত্র সংখ্যা এন এবং একটি যে একটি দ্বারা বিভাজ্য হয় একটি নিজেই।

এখন সংজ্ঞা শুধুমাত্র উল্লেখ এন চেয়ে -primes ছোট একটি , তবে কেন আমরা সবাই এই অতিরিক্ত নম্বর যাচাই করছি? যখন আমরা সমস্যা হবে না একটি কিছু দ্বারা বিভাজ্য হয় এন চেয়ে বড় -composite এন ?

আমরা না করবে না কারন যদি একটা হয় এন বৃহত্তর -composite চেয়ে এন এটা একটি ছোট দ্বারা বিভাজ্য হতে হবে এন -prime সংজ্ঞা দ্বারা। সুতরাং এটি যদি একটি তাই ভাগ করে নেওয়া উচিত ছোট এন- প্রাইম।

যদি একটি ছোট চেয়ে এন [n..a] হতে হবে []এইভাবে সমান করতে পারবে না [1]চেক ব্যর্থ সৃষ্টি হয়।



1

পিপ , 23 19 14 বাইট

b>=a&$&b%(a,b)

সংক্ষিপ্ততম পদ্ধতিটি মিঃ এক্সকোডারের পাইথন উত্তরের একটি বন্দর । কমান্ড-লাইন আর্গুমেন্ট হিসাবে পরীক্ষা করার জন্য সবচেয়ে ছোট প্রাইম এবং সংখ্যাটি নেয়। এটি অনলাইন চেষ্টা করুন!



1

ডিসি , 40 34 37 বাইট

[0p3Q]sf?se[dler%0=f1+dle>u]sudle>u1p

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

এটি ডেমো!


1

এপিএল (ডায়ালগ) , 24 বাইট

{⍵∊o/⍨1=+/¨0=o|⍨⊂o←⍺↓⍳⍵}

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

কিভাবে?

⍳⍵- 1থেকেa

o←⍺↓- nথেকে a, সংরক্ষণ করুনo

o|⍨⊂o- প্রতিটি আইটেম ইন মডিউল oসাথেo

0=- এটি কোথায় সমান 0(বিভক্ত) পরীক্ষা করুন

+/¨ - বিভাগ সংখ্যা যোগফল

1= - যদি আমাদের কেবল একটি থাকে তবে সংখ্যাটি কেবল নিজের দ্বারা ভাগ করা হয়

o/⍨ - সুতরাং আমরা এই ঘটনাগুলি রাখি

⍵∊- কি aসেই অবশিষ্টাংশে আছে?



0

জাভাস্ক্রিপ্ট ES5, 34 বাইট

for(a=i=(p=prompt)();a%--i;);i<p()

0

++ , 20 বাইট যুক্ত করুন

L,2Dx@rBcB%B]b*!!A>*

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

L,   - Create a lambda function
     - Example arguments:  [5 9]
  2D - Copy below; STACK = [5 9 5]
  x  - Repeat;     STACK = [5 9 [9 9 9 9 9]]
  @  - Reverse;    STACK = [[9 9 9 9 9] 5 19] 
  r  - Range;      STACK = [[9 9 9 9 9] [5 6 7 8 9]]
  Bc - Zip;        STACK = [[9 5] [9 6] [9 7] [9 8] [9 9]]
  B% - Modulo;     STACK = [4 3 2 1]
  B] - Wrap;       STACK = [[4 3 2 1]]
  b* - Product;    STACK = [24]
  !! - Boolean;    STACK = [1]
  A  - Arguments;  STACK = [1 5 9]
  >  - Greater;    STACK = [1 1]
  *  - Product;    STACK = [1]
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.