N কে ভাগ করে না এমন সবচেয়ে ছোট সংখ্যাটি সন্ধান করুন


50

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

উদাহরণ: এন = 24 এর বিভাজনগুলি 1, 2, 3, 4, 6, 8, 12, 24। ক্ষুদ্রতম ধনাত্মক পূর্ণসংখ্যা যা সেই তালিকায় নেই এটি 5 , যাতে ফলস্বরূপ আপনার সমাধানটি সন্ধান করা উচিত।

এই OEIS ক্রম A007978

বিধি

আপনি কোনও প্রোগ্রাম বা একটি ফাংশন লিখতে পারেন এবং ইনপুট গ্রহণ এবং আউটপুট সরবরাহের আমাদের মানক পদ্ধতির কোনওটি ব্যবহার করতে পারেন ।

আপনি যে কোনও প্রোগ্রামিং ভাষা ব্যবহার করতে পারেন , তবে লক্ষ্য করুন যে এই ফাঁকগুলি ডিফল্টরূপে নিষিদ্ধ করা হয়েছে।

এটি , তাই সংক্ষিপ্ততম বৈধ উত্তর - বাইটগুলিতে মাপা - জয় w

পরীক্ষার মামলা

প্রথম 100 টি শর্তগুলি হ'ল:

2, 3, 2, 3, 2, 4, 2, 3, 2, 3, 2, 5, 2, 3, 2, 3, 2, 4, 2, 3, 2, 3, 2, 5, 2, 
3, 2, 3, 2, 4, 2, 3, 2, 3, 2, 5, 2, 3, 2, 3, 2, 4, 2, 3, 2, 3, 2, 5, 2, 3, 
2, 3, 2, 4, 2, 3, 2, 3, 2, 7, 2, 3, 2, 3, 2, 4, 2, 3, 2, 3, 2, 5, 2, 3, 2, 
3, 2, 4, 2, 3, 2, 3, 2, 5, 2, 3, 2, 3, 2, 4, 2, 3, 2, 3, 2, 5, 2, 3, 2, 3

বিশেষত, নিশ্চিত হয়ে নিন যে আপনার উত্তর ইনপুট 1 এবং 2 এর জন্য কাজ করে যা ক্ষেত্রে ফলাফলটি ইনপুটটির চেয়ে বড়।

এবং কিছু বৃহত্তর পরীক্ষার ক্ষেত্রে:

N          f(N)
1234567    2
12252240   19
232792560  23

আমি নমুনা আউটপুট স্ট্রিংটিকে সংখ্যার ভেক্টরে পরিণত করেছি এবং বুঝতে পেরেছি যে আপনি যদি এটি 24 টি কলাম জুড়ে ফর্ম্যাট করেন তবে বিজোড় বিচ্যুতি ব্যতীত এটি অত্যন্ত পুনরাবৃত্তিযোগ্য।
কারসিজেনিকেট

এটি বোঝা যায়, 24 0 0 2 মডি 2, 3 এবং 4, সুতরাং কেবলমাত্র পার্থক্যগুলি কলামগুলিতে থাকবে যেখানে সংখ্যা> 4। এটি 120 প্রস্থে আরও বেশি পুনরাবৃত্তিযোগ্য
ক্যালকুলেটরফালাইন

উত্তর:


18

গণিত, 19 বাইট (ইউটিএফ -8 এনকোডিং)

1//.x_/;x∣#:>x+1&

অজানা ফাংশন একটি ননজারো পূর্ণসংখ্যার যুক্তি গ্রহণ এবং একটি ইতিবাচক পূর্ণসংখ্যা ফেরত। প্রায় অর্ধেক পথ পেরিয়ে উল্লম্ব দণ্ডটি হ'ল তিন বাইট অক্ষর ইউ + 2223, যা ম্যাথামেটিকায় বিভাজ্য সম্পর্ককে বোঝায়। ব্যাখ্যা:

1                   Starting with 1,
 //.                apply the following rule until it stops mattering:
    x_                if you see a number x
      /;x∣#           such that x divides the function argument,
           :>x+1      replace it with x+1.
                &   Cool, that's a function.

যুক্ত করতে সম্পাদিত: এনজেনিসিস পয়েন্ট আউট করে যে //.ডিফল্টরূপে সর্বাধিক 65536 বার পুনরাবৃত্তি করবে। সুতরাং এই প্রয়োগটি 1 থেকে 65538 (বিশেষত, সর্বাধিক ২৮৩436 সংখ্যা সহ সমস্ত সংখ্যায়) পূর্ণসংখ্যার সর্বনিম্ন সাধারণ একাধিকের চেয়ে কম সমস্ত ইনপুট সংখ্যার জন্য কাজ করে তবে প্রযুক্তিগতভাবে সমস্ত সংখ্যার জন্য নয়। এই ত্রুটিটি সংশোধন করতে কেউ এর x//.yসাথে প্রতিস্থাপন করতে ReplaceRepeated[x,y,MaxIterations->∞]পারে তবে স্পষ্টতই 34 অতিরিক্ত বাইটের দামে।


ব্যবহার না করেই লুপ করতে অত্যন্ত আকর্ষণীয় উপায় For, While, ইত্যাদি
ngenisis

5
আমি এই সাইট থেকে এটি শিখেছি! আমি এখানে এসে ম্যাথামেটিকা ​​সম্পর্কে আরও বেশি কিছু শিখতে অবশ্যই উপভোগ করছি (আমি কি আমার টাইমশিটে এটি প্রমাণ করতে পারি ...?)।
গ্রেগ মার্টিন

3
এটি গাণিতিক ও_ও এর মতো দেখাচ্ছে না
মামা ফান রোল

2
বড় হাতের অক্ষর এবং বন্ধনীগুলির অভাব যেন আপনাকে বোকা বানাতে দেয় না;)
গ্রেগ মার্টিন


14

পাইথ, 3 বাইট

f%Q

মূলত, fকোডটি লুপ করে না দেওয়া পর্যন্ত %QT( Q % Tযেখানে Tপুনরাবৃত্তির পরিবর্তনশীলটি সত্য)।

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


2
সমস্যাটি দেখেছেন, এই উত্তরটি করেছেন, এটি পোস্ট করতে এখানে এসেছেন, খুঁজে পেয়েছেন আপনার। সাবাশ!
isaacg

আমি এটি লিখেছিলাম এবং নিজের সম্পর্কে অসাধারণ অনুভব করেছি: .V1In%Qb0bBআপনার উত্তরটি দেখেছি এবং এত ভয়ঙ্কর বোধ করছি না।
জন রেড

@ জনরেড লোল, আমি মনে করি আপনাকে পাইথের বিল্ট-ইনগুলির সাথে নিজেকে পরিচিত করতে হবে।
বুসুকসুয়ান

14

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

f=(n,k)=>n%k?k:f(n,-~k)

দ্রষ্টব্য: এখানে একটি মজার বিষয় হ'ল kপ্যারামিটারটি প্রথম পুনরাবৃত্তিতে প্রাক্তন নিহিলোকে আরম্ভ করা হবে । এই কাজ করে কারণ n % undefinedহয় NaN(falsy আশানুরূপ) এবং -~undefinedসমান 1। পরবর্তী পুনরাবৃত্তিতে, -~kমূলত সমান k+1

পরীক্ষা


ঠিক কী পেলাম। যদি আরও ছোট কিছু সম্ভব হয় তবে আমি অবাক হব
ETH প্রোডাকশন

@ ইথ প্রডাকশনস দ্বিতীয় ভাবার পরে, একটি ছোট হয়। :-)
আর্নল্ড

5
উম। ওহ ... বাহ!
ETH প্রোডাকশনগুলি



11

আর, 28 বাইট

খুব সোজা, অভিনব কিছু না। স্টিডিন থেকে ইনপুট নেয়, মডুলো ননজারো Tনা হওয়া পর্যন্ত ইনক্রিমেন্ট মান ।iT

i=scan()
while(!i%%T)T=T+1
T

আপনি যদি আরও কিছু অভিনব কিছু চান, তবে 29 বাইটের জন্য নিম্নলিখিত রয়েছে :

i=scan()
match(0,!i%%1:(i+1))

ব্যাখ্যা:

i=scan(): iস্টিডিন থেকে পড়া ।

1:(i+1): থেকে সব পূর্ণসংখ্যার জেনারেট করুন 1থেকে i+1( +1ক্ষেত্রে জন্য অ্যাকাউন্টিং 1এবং 2)।

i%%1:(i+1) : আমাদের তালিকার প্রতিটি সংখ্যার দ্বারা ইনপুটটি মডুলো করুন।

!i%%1:(i+1): ফলাফলের তালিকাটি নেগেট করুন; এই পরোক্ষভাবে, একটি লজিক্যাল টাইপ এটি পরিবর্তন করে যেমন যে 0হয় FALSEএবং অশূন্য হয় TRUE। উপেক্ষা করার পরে, TRUEমানগুলি হয়ে যায় FALSEএবং তদ্বিপরীত হয়। এখন, সমস্ত ননজারো মানগুলি কোড হিসাবে কোড করা হয় FALSE

match(0,!i%%1:(i+1)): 0আমাদের তালিকার প্রথম উদাহরণের সূচকটি ফেরত দিন । 0হয় FALSE, সুতরাং FALSEএটি তালিকার প্রথমটির সূচকটি প্রদান করে , যা মডিউল অপারেশন থেকে প্রথম ননজারো মান। যেহেতু আমাদের মূল তালিকাটি শুরু হয়েছিল 1, সূচকটি ক্ষুদ্রতম বিভাজকের মানের সমান।


সুন্দর, সবেমাত্র ব্যবহারের পরামর্শ দিতে চেয়েছিল which.min, তবে আমি সম্পাদনাটি দেখেছি এবং মনে matchহয় এটি একই রকম কাজ করে job
জেএডি

2
এছাড়াও, দুর্দান্ত কৌশল ব্যবহার Tকরে whileলুপের আগে এটি সংজ্ঞায়িত করার প্রয়োজনীয়তা সঞ্চয় করে ।
জেএডি

@ জারকো ডাবডেলডাম ধন্যবাদ! ভেক্টরাইজড এপ্রোচটি পদ্ধতির চেয়ে ছোট হওয়ার কোনও উপায় আমি খুঁজে পাচ্ছি না, এটি দুর্দান্ত whileএন এর পক্ষে খুব স্মৃতি-নিবিড়। Tকৌশলটি গল্ফিংয়ের জন্য দুর্দান্ত তবে আসল প্রোগ্রামিংয়ের জন্য একেবারে ভয়াবহ। (এবং অবশ্যই আপনার Fখুব দরকার হলে আপনিও ব্যবহার করতে পারেন 0))
রটারনবুল

আপনি 1: 1 এর পরিবর্তে 0: i + 1 ব্যবহার করে দুটি বাইট সংরক্ষণ করতে পারেন: (i + 1) যদিও এটি নিশ্চিত নয় যে এটি %% অপারেটরের সাথে কীভাবে খেলবে।
এন্টোইন-স্যাক

@ এন্টোইন-স্যাক দুর্ভাগ্যক্রমে, %%অগ্রাধিকার নেয় +, তাই প্যারেনগুলি এখনও প্রয়োজনীয় :, (0:i+1)একই সংখ্যক বাইট সহ 1:(i+1)। আমি আসলে প্রাক্তনটি মূলত ছিলাম, তবে এটি পড়ার পক্ষে সহজ হওয়ায় এটি এটি পরে পরিবর্তিত হয়েছে।
rturnbull

10

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

f n=until((>0).mod n)(+1)1

সবাই ভুলে যায় until!


9

ব্র্যাচল্যাগ , 10 বাইট

~{=#>:A'*}

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

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

~{=#>:A'*}
~{       }    inverse of the following function:
  =           try possible values for the input, if it's unbound
   #>         the input is a positive integer
     :A'*     there is no A for which the input times A is the output

"ইনপুট" এবং "আউটপুট" অদলবদল করে আমরা যখন ফাংশনটি উল্টে ফেলি, তখন আমরা একটি মোটামুটি যুক্তিসঙ্গত অ্যালগরিদম পাই (কেবল একটি বিশ্রী উপায়ে প্রকাশ করেছি): "সম্ভাব্য ইতিবাচক পূর্ণসংখ্যার চেষ্টা করুন, তাদের প্রাকৃতিক ক্রমে (অর্থাত্ 1 উপরে), যতক্ষণ না আপনি পান একটি যা ইনপুট উত্পাদন করতে কোনও কিছুর দ্বারা গুণ করা যায় না "। সমস্ত ইনপুট জানা না থাকলে ব্র্যাক্ল্যাগ ভাসমান-পয়েন্ট গণনা করে না, সুতরাং এটি কেবল পূর্ণসংখ্যা এ বিবেচনা করবে A.


1
সেটা করার কথা কখনও ভাবিনি, এটাই ঝরঝরে!
3:38


8

COW, 174 বাইট

oomMOOMMMmoOmoOmoOMMMmOomOoMoOMMMmoOmoOmoOMMMmOoMOOmoO
MOomoOMoOmOoMOOmoOmoomoOMOOmOoMoOmoOMOomoomOomOoMOOmOo
moomoOMOomoomoOmoOMOOmOomOomOomOoOOMOOOMOomOOmoomOomOo
mOomOomOomoo

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

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

কোড ভাঙ্গা

oom                          ;Read input into [0].
MOO                          ;Loop while [0].  We never change [0], so the program only terminates forcibly after a print.
  MMMmoOmoOmoOMMMmOomOo      ; Copy [0] to [3] and navigate to [1].
  MoOMMMmoOmoOmoOMMM         ; Increment [1], and copy it to [4]
  mOo                        ; Navigate back to [3].
  MOO                        ; Modulus algorithm.  Direct port of brainfuck algorithm.
    moOMOomoOMoOmOo
    MOO
      moO
    moo
    moO
    MOO
      mOoMoOmoOMOo
    moo
    mOomOo
    MOO
      mOo
    moo
    moOMOo
  moo                        ; End modulus algorithm.
  moOmoO                     ; Navigate to [5].  This contains our modulus.
  MOO                        ; Only perform these operations if [5] is non-zero -- i.e. [0] % [1] != 0
    mOomOomOomOoOOMOOOMOomOO ;  Navigate to [1], print its contents, then error out.
  moo                        ; End condition
  mOomOomOomOomOo            ; Since we're still running, [0] % [1] == 0, so navigate back to [0] and try again.
moo                          ;End main loop.

ব্যাখ্যা

কোডটি প্রথমে পূর্ণসংখ্যায় পড়ে [0]। মূল লুপের প্রতিটি পুনরাবৃত্তি (লাইন 2 থেকে 26) বৃদ্ধি হয় [1], তারপরে প্রয়োজনীয় সমস্ত কিছুই মডিউলাস অ্যালগরিদমে অনুলিপি করে, যার ফলাফলটি [5] এ বিভক্ত হয়। যদি [5] এর কোনও মান থাকে তবে [1] আমাদের মুদ্রণের জন্য প্রয়োজনীয় নম্বর। আমরা এটি মুদ্রণ করি এবং তারপরে প্রোগ্রামটি জোর করে ছাড়ি।

যেহেতু সিওডাব্লু একটি ব্রেইনফাক ডেরাইভেটিভ, এটি ব্রেনফাক পরিচালিত পদ্ধতির সাথে তুলনামূলকভাবে সমানভাবে কাজ করে - টেপের অসীম স্ট্রিপ, আপনি বাম বা ডানদিকে যেতে পারেন, বৃদ্ধি বা হ্রাস করতে পারবেন এবং "লুপ" করতে পারবেন যখন বর্তমান টেপের মান শূন্য নয়। ব্রেইনফাক ছাড়াও, COW বেশ কয়েকটি দরকারী বৈশিষ্ট্য নিয়ে আসে।

(0) moo -- Equivalent to ]
(1) mOo -- Equivalent to <
(2) moO -- Equivalent to >
(3) mOO -- No equivalent.  Evaluate current tape value as instruction from this list.
(4) Moo -- If tape is 0, equivalent to ,; if tape is non-zero, equivalent to .
(5) MOo -- Equivalent to -
(6) MoO -- Equivalent to +
(7) MOO -- Equivalent to [
(8) OOO -- No equivalent.  Set tape (positive or negative) to 0
(9) MMM -- No equivalent.  If register is empty, copy tape to register.  If register is non-empty, paste register to tape and clear register.
(10) OOM -- No equivalent.  Print an integer from tape to STDOUT
(11) oom -- No equivalent.  Read an integer from STDIN and store it on tape

এখানে আগ্রহের আসল বিষয়টি নির্দেশ 3 mOO,। দোভাষী তার বর্তমান টেপ মানটি পড়েন এবং সেই টেপ মানের উপর ভিত্তি করে একটি নির্দেশনা কার্যকর করেন। যদি মান 0 এর চেয়ে কম হয়, 11 টিরও বেশি, বা 3 এর সমান, দোভাষী দের সাথে প্রোগ্রামটি সমাপ্ত করে। আমরা যখন আমাদের অ-বিভাজককে খুঁজে পেলাম আমরা দ্রুত এবং নোংরা শক্তি হিসাবে প্রধান লুপটি (এবং পুরোপুরি প্রোগ্রামটি) ছাড়ার জন্য এটি ব্যবহার করতে পারি। আমাদের যা করতে হবে তা হ'ল আমাদের নম্বর মুদ্রণ করা, [1] (সহ OOO) সাফ করা , এটি দিয়ে -1 এ হ্রাস করা MOo, এবং তারপরে নির্দেশনা -1 কার্যকর করা mOOযার মাধ্যমে প্রোগ্রামটি শেষ হয়।

এই প্রোগ্রামটির জন্য টেপ নিজেই নিম্নলিখিত হিসাবে কাজ করে:

[0]  -- Read-in integer from STDIN.
[1]  -- Current divisor to test
[2]  -- Placeholder for modulus algorithm
[3]  -- Temporary copy of [0] for use for modulus algorithm
[4]  -- Temporary copy of [1] for use for modulus algorithm
[5]  -- Placeholder for modulus algorithm.  Location of remainder at end of loop.
[6]  -- Placeholder for modulus algorithm
[7]  -- Placeholder for modulus algorithm

মডুলাস অ্যালগরিদম অপারেশন শেষে প্রাকৃতিকভাবে [2], [3], [6] এবং [7] সাফ করে। [4] এর সামগ্রীগুলি 4 রেখায় রেজিস্টার পেস্টের সাথে ওভাররাইট হয়ে যায়, এবং [0] [1] দ্বারা বিভাজক হয়ে গেলে [0] শূন্য হয়, সুতরাং আমাদের এটি পরিষ্কার করতে হবে না। যদি [5] অ-শূন্য হয়, আমরা 23 লাইনে জোর করে ছেড়ে দেই যাতে আমাদের এটি নিয়ে চিন্তা করতে হবে না।


7

05 এ বি 1 ই , 7 বাইট

Xµ¹NÖ_½

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

ব্যাখ্যা

Xµ       # run until counter is 1
  ¹      # push input
   N     # push iteration counter
    Ö_   # push input % iteration counter != 0
      ½  # if true, increase counter
         # output last iteration

ভাল লাগল, আমি ভাবছিলাম যে আপনি কীভাবে 05AB1E এ এই পুনরাবৃত্তি করবেন?
যাদু অক্টোপাস উরন

7

জেলি , 5 বাইট

1%@#Ḣ

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

ব্যাখ্যা:

1%@#Ḣ
1  #      Find the first … numbers, counting up from 1, such that
 %@       dividing those numbers into … gives a truthy remainder
    Ḣ     then return the first

এটি একটি ভয়াবহ অপব্যবহার #; এই প্রোগ্রামটিতে প্রচুর পরিমাণে অপারেটর রয়েছে, তবে এক টন নিখোঁজ অপারেশন রয়েছে। #সত্যই চায় যে 1কোনও কারণে স্পষ্টভাবে দেওয়া হোক (অন্যথায় এটি ইনপুটটিতে ডিফল্ট হওয়ার চেষ্টা করে); যাইহোক, প্রোগ্রামে উল্লিখিত নয় এমন সমস্ত কিছু প্রোগ্রামের ইনপুটটিতে ডিফল্ট হয়। (সুতরাং উদাহরণস্বরূপ, আপনি যদি ইনপুট হিসাবে 24 দেন তবে এই প্রোগ্রামটি প্রথম 24 নম্বরগুলি খুঁজে পায় যা 24 কে ভাগ করে না, তারপরে প্রথমটি ফেরত দেয়; ধরণের অপব্যয়ী, তবে এটি কার্যকর হয়))


জেলি খারাপ! পাইথ তোমাকে আজ মারছে! : ডি
জন রেড

কেবলমাত্র ASCII:2%@1#
এরিক আউটগল্ফার

7

সি, 32 35 বাইট

i;f(x){for(i=1;x%++i<1;);return i;}

সম্পাদনা করুন: i=1লুপে যুক্ত হয়েছে

ব্যবহার

main(c,v)char**v;{printf("%d",f(atoi(*++v)));}

সম্পূর্ণ প্রোগ্রাম সংস্করণ, By৪ বাইট:

main(c,v)char**v;{*++v;for(c=1;atoi(*v)%++c<1;);printf("%d",c);}

6

সি #, 39 37 বাইট

n=>{int i=0;while(n%++i<1);return i;}

দুটি বাইট সংরক্ষণ করেছেন মার্টিনকে ধন্যবাদ!


আমি যখন পছন্দ করি (! (N% ++ i)); আরও ভাল তবে অবশ্যই এটি কোড গল্ফ এবং 1 বাইট 1 বাইট।
জন হ্যামিল্টন

ওইটা কি কাজ করে? আমি জানতাম না যে 0 টি স্বয়ংক্রিয়ভাবে মিথ্যা হিসাবে মূল্যায়ন করা হয়েছে
Alfie গুডাক্রে

আহ, আমি এটি সি ++ এ চেষ্টা করেছি, হ্যাঁ এটি সি # এর সাথে কাজ করে না।
জন হ্যামিল্টন

6

পার্ল, 19 বাইট

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

$_=$_%++$.?$.:redo

এটি চালানোর জন্য:

perl -pE '$_=$_%++$.?$.:redo' <<< 12252240

খুব বিস্তৃত ব্যাখ্যা নয়:
- $.একটি বিশেষ পরিবর্তনশীল যাঁর ডিফল্ট মান হ'ল সর্বশেষ ফাইলহ্যান্ডেল অ্যাক্সেস করা বর্তমান স্ট্যান্ড নম্বর (স্টিডিন এখানে), সুতরাং ইনপুটটির প্রথম লাইনটি পড়ার পরে, এটি 1 এ সেট করা আছে
- $_ইনপুট ধারণ করে এবং স্পষ্টভাবে মুদ্রিত হয় শেষে ( -pপতাকা ধন্যবাদ )
- redo(এই প্রসঙ্গে) বিবেচনা করে যে প্রোগ্রামটি একটি লুপে রয়েছে এবং বর্তমান পুনরাবৃত্তিটি পুনরায় করুন ( $.এটি বৃদ্ধি পাওয়ায় কেবল ভিন্ন হবে)।
- সুতরাং যদি আমরা ক্ষুদ্রতম সংখ্যা (সঞ্চিত $.) দেখতে পাই যা বিভক্ত হয় না $_, তবে আমরা $_এটিতে সেট করেছিলাম, অন্যথায়, আমরা পরবর্তী সংখ্যাটি চেষ্টা করি (ধন্যবাদ redo)।


6

অষ্টাভে / ম্যাটল্যাব, 26 24 বাইট

@(n)find(mod(n,1:n+1),1)

find(...,1)1প্রথম যুক্তিতে ভেক্টরের প্রথম ননজারো উপাদানটির সূচক ( -ভিত্তিক) প্রদান করে। প্রথম যুক্তিটি হ'ল [n mod 1, n mod 2, n mod 3, n mod 4,...,n mod (n+1)]এর অর্থ আমাদের +1সূচীতে যুক্ত করতে হবে, যেহেতু আমরা পরীক্ষা শুরু করি 1। ধন্যবাদ-জিউসেপ -২ বাইটের জন্য

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


@(n)find(mod(n,1:n+1),1)খাটো, তাই না?
জিউসেপে

এটা সত্যিই, ধন্যবাদ!
flawr

5

জেলি , 6 বাইট

%R;‘TḢ

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

ব্যাখ্যা:

                                               Assume 24 is our N
 R      Generate all numbers from 1 to N         [1, 2, 3, 4 .., 24]
  ;‘    Attach N+1 to that list (for cases 1,2)  [1, 2, 3, 4 .., 25]
%       And modulo-divide our input by it
        Yields a list with the remainder         [0, 0, 0, 0, 4 ...]
    T   Return all thruthy indexes               [5, 7, ...]
     Ḣ  Takes the first element of that list -->  5

আমি জেলিকে চিনি না, তবে আপনি ব্যাপ্তি তৈরি করার আগে এন বাড়িয়ে একটি বাইট সংরক্ষণ করতে পারবেন?
এমিগিনা

@ এমিগানা আমি জেলিকেও চিনি না;) আমি কীভাবে দেখছি না: এটির আগে বৃদ্ধি করা এন + 1 এর বিপরীতে মডুলো পরীক্ষাও করে, বা অবশিষ্টদের বাড়িয়ে তোলে [1, 1, 1, 1, 5, ...]
স্টেনবার্গ

আহ আমি দেখি. আমি ভেবেছিলাম এন% ব্যাপ্তি (1, এন + 1) করা সম্ভব হতে পারে তবে এটি যদি উভয় ক্ষেত্রে এন বাড়িয়ে দেয় তবে এটি ভাল নয়।
Emigna

5

পার্ল 6 , 17 বাইট

{first $_%*,1..*}

চেষ্টা করে দেখুন

সম্প্রসারিত:

{  # bare block lambda with implicit parameter 「$_」

  # return the first value
  first

  # where the block's argument 「$_」 modulus the current value 「*」
  # doesn't return 0 ( WhateverCode lambda )
  $_ % *,
  # ( 「$_ !%% *」 would be the right way to write it )

  # from 1 to Whatever
  1 .. *
}

5

05 এ বি 1 ই , 6 বাইট

ÌL¹ÑK¬

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

এছাড়াও, এটি "লিঙ্ক!" ... কিন্ডা বানান

ÌL     # Push [1..n+2]
  ¹Ñ   # Push divisors of n.
    K¬ # Push a without characters of b, and take first item.

@ জাগারব সেই অংশটি মিস করেছেন, প্রাথমিক বর্ধিতকরণ 2 দ্বারা সমস্যা সংশোধন করেছে।
ম্যাজিক অক্টোপাস উরান

1
নিস! আমি সর্বদা ভুলে যাই যে 05ab1e এর একটি বিভাজক ফাংশন রয়েছে :)
এমিগিনা


4

পাইথন 2.7.9, 32 বাইট

f=lambda n,d=1:n%d>0or-~f(n,d+1)

আইডিয়নে পরীক্ষা

পুনরাবৃত্তিমূলক সম্ভাব্য অবিভাজনকারীদের গণনা করে d। ফলাফলের ফলাফলের চেয়ে আউটপুটের চেয়ে বার্ষিক বৃদ্ধি করা সংক্ষিপ্ত d। এর অফসেট 1বুলিয়ান দ্বারা অর্জন করা হয় True, যা সমান 1, তবে যেহেতু d==1সর্বদা বিভাজক হয়, আউটপুট সর্বদা একটি সংখ্যায় রূপান্তরিত হয়।

পাইথন ২.7.৯ অনুমতি দেওয়ার জন্য ব্যবহৃত হয় 0or। ২.7.১০ থেকে শুরু হওয়া সংস্করণগুলি অষ্টাল 0orসংখ্যার শুরু হিসাবে পার্স করার চেষ্টা করবে এবং একটি বাক্য গঠন ত্রুটি দেওয়া হবে। আইডিয়নে এটি দেখুন


3

আসলে , 7 বাইট

;÷@uR-m

এটি অনলাইন চেষ্টা করুন! (দ্রষ্টব্য: এটি একটি খুব ধীর সমাধান, এবং বড় পরীক্ষার ক্ষেত্রে দীর্ঘ সময় নিবে)

ব্যাখ্যা:

;÷@uR-m
;÷       duplicate N, divisors
  @uR    range(1, N+2)
     -   set difference (values in [1, N+1] that are not divisors of N)
      m  minimum

3

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

f n=[k|k<-[2..],mod n k>0]!!0

এক্সপ্রেশনটি [k|k<-[2..]]কেবল একটি অসীম তালিকা তৈরি করে [2,3,4,5,...]। শর্তের সাথে mod n k>0আমরা কেবল kতালিকার মধ্যে যারা ভাগ না করে তাদের অনুমতি দিই n। সংযোজন!!0 মাত্র প্রথম এন্ট্রি (সূচিতে এন্ট্রি ফেরৎ 0) যে তালিকা তৈরি করে।

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


3

ডায়ালগ এপিএল , 8 বাইট

1⍳⍨0≠⍳|⊢

1⍳⍨ প্রথম সত্য মধ্যে অবস্থান

0≠ অ-শূন্য মান

⍳|1 ... N এর ভাগ অবশিষ্ট যখন ভাগ করা হয়

এন

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

দ্রষ্টব্য: এটি 1 এবং 2 এর জন্য কাজ করে কারণ 1⍳⍨যদি কিছু না পাওয়া যায় তবে তার যুক্তির দৈর্ঘ্য 1 + প্রদান করে।


3

জুলিয়া, 28 বাইট

N->findfirst(x->N%x>0,1:N+2)

দ্রষ্টব্য: যেহেতু 1:N+2মেমরির সেখানে বড় কোন মেমরির সমস্যার হল বরাদ্দ নেই Nগুলি
- @flawr N+2আমার জন্য কিছু বাইট সংরক্ষণ
@Martin এর প্রস্তাবনা সংরক্ষিত 1 বাইট -


3

কিউবিআইসি , 14 বাইট

:[a+1|~a%b|_Xb

ব্যাখ্যা:

:      Read the first cmd line param as a number, called 'a'
[a+1|  FOR (b=1 ; b <= a+1; b++) <-- a+1 for cases a = 1 or 2
~a%b   IF A modulo B ( == 0, implicit)
|_Xb   THEN exit the program, printing b
       [IF and FOR implicitly closed by QBIC]

3

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

for(;$argv[1]%++$i<1;);echo$i;

যদি -rবিকল্প সহ কনসোল থেকে চালানো হয় (thx থেকে @ ais523)

php -r 'for(;$argv[1]%++$i<1;);echo$i;' 232792560

32 বাইট

<?for(;$argv[1]%++$i<1;);echo$i;

1 বাইট অপসারণ করার জন্য @ মান্যাটওয়ার্ককে ধন্যবাদ

33 বাইট (মূল)

<?for(;$argv[1]%++$i==0;);echo$i;

3
আইআইআরসি, <?আপনার বাইট কাউন্টের অংশ হতে হবে না (কারণ পিএইচপি-র একটি কমান্ড-লাইন মোড রয়েছে যা এর প্রয়োজন হয় না)।

3
পুরানো কৌশল: <1পরিবর্তে তুলনা করুন ==0
manatwork

Dang। আমি পৌঁছেছি for(;!($argv[1]%$i);$i++);echo$i;। আপনার আমার প্রাকৃতিক বিবর্তন। এই আমার উপভোগ আছে!
ইসমাইল মিগুয়েল

3

কিউবিক্স , 14 12 বাইট

I2/L/);?%<@O

মিকিটি-তে 2 বাইট সংরক্ষণ করা হয়েছে।

চেষ্টা করে দেখুন

ব্যাখ্যা

কিউব আকারে, কোডটি হ'ল:

    I 2
    / L
/ ) ; ? % < @ O
. . . . . . . .
    . .
    . .

মূলত, এটি কেবল ইনপুট নেয় এবং একটি কাউন্টার শুরু করে। এটি তখন কাউন্টারটির প্রতিটি ক্রমান্বিত মানটি পরীক্ষা করে এটি না পাওয়া অবধি যে ইনপুটটির কারণ নয়।


I2/L/);?%<@Oকম কয়েক বাইট জন্য। একই সাধারণ প্রক্রিয়া, ঠিক আলাদা পাথ
মিকিটি


2

জেলিফিশ , 12 10 বাইট

p\~~|1
 >i

STDIN এবং আউটপুট থেকে STDOUT এ ইনপুট নেয়। এটি অনলাইন চেষ্টা করুন!

মার্টিন ইন্ডার 2 বাইট সংরক্ষণ করেছেন, ধন্যবাদ!

ব্যাখ্যা

 \~~|
 >i

এই অংশটি এমন একটি ফাংশন যা এর সংজ্ঞাতে ইনপুট মানটি ব্যবহার করে।

   ~|

এই ~-सेलটিকে একটি ফাংশন দেওয়া হয়, সুতরাং এটি তার আর্গুমেন্টগুলি ফ্লপ করে: এটি বাইনারি ফাংশন "বাম আর্গুমেন্ট মডুলো ( |) ডান আর্গুমেন্ট" উত্পাদন করে। জেলিফিশে অন্তর্নির্মিত মডুলো ফাংশনটি তার যুক্তিগুলি বিপরীত ক্রমে গ্রহণ করে।

  ~~|
  i

এই- ~সেলকে একটি মান এবং একটি ফাংশন দেওয়া হয়, সুতরাং এটি আংশিক প্রয়োগ করে: এটি বাইনারি ফাংশন "ইনপুট ( i) মডিউল রাইট আর্গুমেন্ট" তৈরি করে। এর কল যে ফাংশন যাক

 \~~|
 >i

\-Cell দুটি ফাংশন দেওয়া হয়, তাই এটি পুনরাবৃত্তির করে: এটা ইউনারী ফাংশন "বৃদ্ধি (উৎপন্ন >) পর্যন্ত ফাংশন পূর্ববর্তী ও বর্তমান মান প্রয়োগ করা একটি truthy (অশূন্য) ফলাফল দেয়, তারপর বর্তমান মান"। এর অর্থ এই যে যুক্তিটি বাড়ানো হয় যতক্ষণ না এটি ইনপুট ভাগ না করে।

p\~~|1
 >i

অবশেষে, আমরা প্রাথমিক মানটিতে এই ফাংশনটি প্রয়োগ করি 1এবং এর সাথে ফলাফলটি মুদ্রণ করি p

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