প্রতিবেশী কারণগুলির সাথে পূর্ণসংখ্যার অনুপাত


11

1 যদি একটি গুণক হিসাবে গণনা করা হয় না, তবে

  • 40 এর দুটি প্রতিবেশী কারণ রয়েছে (4 এবং 5)
  • 1092 এর দুটি প্রতিবেশী কারণ রয়েছে (13 এবং 14)
  • 350 এর দুটি প্রতিবেশী কারণ নেই (এর কারণগুলির মধ্যে 2, 5, 7, 10, 14, 25, 35, 50, 70 এবং 175, কোনও দুটিই পরপর নয়)

এই সম্পত্তিটির ধনাত্মক পূর্ণসংখ্যার অনুপাত হ'ল অনুপাত 6 (2 × 3), 12 (3 × 4), 20 (4 × 5), 30, 56,… এর দ্বারা বিভাজ্য। যদি আমরা কেবলমাত্র এর প্রথম এন দ্বারা বিভাজ্য অনুপাতটি গণনা করি, আমরা একটি আনুমানিক পাই যা এন বৃদ্ধি পাওয়ার সাথে সাথে আরও সঠিক হয়ে যায়।

উদাহরণস্বরূপ, এন = 1 এর জন্য আমরা 2 × 3 = 6 দ্বারা ভাগ করে নেওয়া পূর্ণসংখ্যার অনুপাত খুঁজে পাই যা 1/6। জন্য এন = 2 , সমস্ত পূর্ণসংখ্যার বিভাজ্য 3 × 4 = 12 6 দ্বারা এছাড়াও বিভাজ্য দ্বারা, তাই পড়তা এখনও 1/6 হয়। জন্য এন = 3 , পূর্ণসংখ্যার অনুপাত বিভাজ্য 6 অথবা 20 1/5, এবং তাই দ্বারা।

এখানে প্রথম কয়েকটি মান রয়েছে:

1  1/6                0.16666666666666666
3  1/5                0.20000000000000000
6  22/105             0.20952380952380953
9  491/2310           0.21255411255411255
12 2153/10010         0.21508491508491510
15 36887/170170       0.21676558735382265
21 65563/301070       0.21776663234463747
24 853883/3913910     0.21816623274423785
27 24796879/113503390 0.21846817967287144

প্রদত্ত মানগুলির মধ্যে n এর মানগুলির জন্য , আউটপুট উপরের মানের (যেমন এন = 5 → 1/5) আউটপুটের সমান হওয়া উচিত ।

আপনার প্রোগ্রামটির n এবং আউটপুটটি কোনও ভগ্নাংশ বা দশমিক উত্তর হওয়া উচিত। আপনি যে কোনও অফসেটে এন নিতে পারেন (উদাহরণস্বরূপ 0-ইনডেক্সিং বা 1-ইনডেক্সিংয়ের পরিবর্তে এই অনুক্রমের মধ্যে 2-ইনডেক্সিং)।

দশমিক আউটপুট দেওয়ার জন্য, আপনার প্রোগ্রামটি দেওয়া সমস্ত পরীক্ষার ক্ষেত্রে কমপক্ষে 5 টি সংখ্যার সঠিক হতে হবে।

স্কোরিং হ'ল সংক্ষিপ্ত কোড জয়ের সাথে

ইতিবাচক পূর্ণসংখ্যার অনুপাতের দ্বারা অনুপ্রাণিত হ'ল দুটি দ্বারা পৃথক দুটি কারণ কী? শহীদ কোহেন দ্বারা - বিশেষ করে ড্যানের উত্তর দ্বারা।


1
দশমিক উত্তর কতটা সঠিক হতে হবে? একটি প্রাকৃতিক কৌশল বলে মনে হচ্ছে কিছু বিস্তৃত পরিসরে বৈধ বিভাজকের সাথে পূর্ণসংখ্যা গণনা করা এবং পরিসীমাটির দৈর্ঘ্য দ্বারা ভাগ করা, যা পরিসীমাটি বড় হওয়ার সাথে সাথে আনুমানিক হিসাবে আরও ভাল হয়।
xnor

@ এক্সনর আমি এখন পোস্টে সম্বোধন করেছি।
Doorknob

উত্তর:


6

জেলি ,  14 13  10 বাইট

-1 এরিক ও আউটগল্ফার এর ধারণাটি ব্যবহার করে শূন্য এবংগুলির তালিকাগুলির গড় বোঝাতে।
-3 3-ইনডেক্সিং (প্রশ্নে অনুমোদিত হিসাবে) ব্যবহার করে - এটি নির্দেশ করার জন্য ডেনিসকে ধন্যবাদ।

ḊPƝḍⱮ!Ẹ€Æm

একটি পূর্ণসংখ্যার লিঙ্ক একটি পূর্ণসংখ্যা গ্রহণ করে n+2, যা একটি ভাসা ফল দেয়।

[2,(এন+ +2)!]

(হিসাবে +2µḊPƝḍⱮ!§T,$Ẉনেওয়া nএবং ফলন [numerator, denominator], অবিশ্বস্ত হিসাবে শুরু )

কিভাবে?

ḊPƝḍⱮ!Ẹ€Æm - Link: integer, x=n+2
Ḋ          - dequeue (implicit range of) x  - i.e. [2,3,4,...,n+2]
  Ɲ        - apply to neighbours:
 P         -   product                             [2×3,3×4,...,(n+1)×(n+2)]
     !     - factorial of x                        x!
    Ɱ      - map across (implicit range of) x! with:
   ḍ       -   divides?                            [[2×3ḍ1,3×4ḍ1,...,(n+1)×(n+2)ḍ1],[2×3ḍ2,3×4ḍ2,...,(n+1)×(n+2)ḍ2],...,[2×3ḍ(x!),3×4ḍ(x!),...,(n+1)×(n+2)ḍ(x!)]]
       €   - for each:
      Ẹ    -   any?  (1 if divisible by any of the neighbour products else 0)
        Æm - mean

এইচএম ... আমার সন্দেহ হয় যা আমার থেকে এইটিকে খাটো করে তোলে তার !পরিবর্তে ব্যবহার করা æl/... আহা, ঘুমের সময় নিয়মের আনন্দ বদলে যায়।
এরিক আউটগলফার

@ ইরিকথ আউটগল্ফার হ্যাঁ, খুব কাছাকাছি পদ্ধতি যখন আমি কাছাকাছি দেখি! Pআপনি 13 এ নামতে ব্যবহার করতে পারেন?
জোনাথন অ্যালান

এর বদলে Ẹ€? আমি ভয় করি Pএকইরকম ׃1$, তাই এটি কাজ করবে না। (এবং যে 14 যাহাই হউক না কেন হবে ...) পরিবর্তে যদি æl/, হয়তো ( P হয় LCM * ট সব পর)।
এরিক আউটগল্ফার

এর পরিবর্তে @ এরিকথ আউটগলফারæl/
জোনাথন অ্যালান

হ্যাঁ, আমি মনে করি আমি এটি করতে পারি এবং ফলাফলটি তাত্ত্বিকভাবে æl/আমার অনুমান অনুসারে যথাযথ হবে । (নাইট-পেঁচার গল্ফিংয়ের সমস্যা আছে ...) সম্পাদনা: হ্যাঁ, যদিও আমাকে টিআইও নিয়ে তর্ক কমিয়ে আনতে হবে 4...: পি
এরিক দ্য আউটগলফার

3

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

Ì©!Lε®LüP¦Öà}ÅA

@ জোনাথন অ্যালান এর জেলি উত্তর বন্দর , তাই খুব ধীর।

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

ব্যাখ্যা:

Ì                 # Add 2 to the (implicit) input
                  #  i.e. 3 → 5
 ©                # Store this in the register (without popping)
  !               # Take the factorial of it
                  #  i.e. 5 → 120
   L              # Create a list in the range [1, (input+2)!]
                  #   i.e. 120 → [1,2,3,...,118,119,120]
    ε       }     #  Map over each value in this list
     ®            #  Push the input+2 from the register
      L           #  Create a list in the range [1, input+2]
                  #   i.e. 5 → [1,2,3,4,5]
       ü          #  Take each pair
                  #    i.e. [1,2,3,4,5] → [[1,2],[2,3],[3,4],[4,5]]
        P         #   And take the product of that pair
                  #    i.e. [[1,2],[2,3],[3,4],[4,5]] → [2,6,12,20]
         ¦        #  Then remove the first value from this product-pair list
                  #   i.e. [2,6,12,20] → [6,12,20]
          Ö       #  Check for each product-pair if it divides the current map-value
                  #  (1 if truthy; 0 if falsey)
                  #   i.e. [1,2,3,...,118,119,120] and [6,12,20]
                  #    → [[0,0,0],[0,0,0],[0,0,0],...,[0,0,0],[0,0,0],[1,1,1]]
           à      #  And check if it's truthy for any by taking the maximum
                  #   i.e. [[0,0,0],[0,0,0],[0,0,0],...,[0,0,0],[0,0,0],[1,1,1]]
                  #    → [0,0,0,...,0,0,1]
             ÅA   # After the map, take the mean (and output implicitly)
                  #  i.e. [0,0,0,...,0,0,1] → 0.2

3

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

সেখান থেকে @ শেগি + আরও 2 বাইটের জন্য 2 বাইট সংরক্ষণ করা হয়েছে

এক দশমিক আনুমানিক প্রত্যাবর্তন করে।

n=>(x=2,g=a=>n--?g([...a,x*++x]):[...Array(1e6)].map((_,k)=>n+=a.some(d=>k%d<1))&&n/1e6)``

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


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

[এনতোমার দর্শন লগ করামিRএকটিটিR,এনমিআমিএনএকটিটিR]

f=(n,a=[],p=x=1)=>n?f(n-1,[...a,q=++x*-~x],p*q/(g=(a,b)=>a?g(b%a,a):b)(p,q)):[...Array(p)].map((_,k)=>n+=a.some(d=>-~k%d<1))&&[n,p]

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



এই কাজ করা উচিত, তত্ত্ব 82 বাইট জন্য।
শেগি

@ শেগি আমি এর মত উত্তরের জন্য reallyকমত্য কি তা সত্যই জানি না। যদিও এটি তত্ত্বের সাথে কাজ করে, কোনও ইনপুটটির জন্য এটি বাস্তবে কাজ করে না। (আমি ব্যক্তিগতভাবে এই জাতীয় উত্তরগুলি অপছন্দ করি This এ কারণেই আমি সাধারণত আমার নিজের চ্যালেঞ্জগুলিতে "আপনার কোড কমপক্ষে একটি নির্দিষ্ট সীমা পর্যন্ত কাজ করা উচিত" এর মতো একটি বিধি অন্তর্ভুক্ত করি যখন আমার সন্দেহ হয় যে আমি "কেবলমাত্র কাজ করে" এর মতো উত্তর পেয়ে যাব টিআইওতে এন = 1 এর জন্য " ... বা বর্তমান ক্ষেত্রে মোটেই কাজ করে না))
আর্নল্ড

ব্যক্তিগতভাবে, আমি অসীম সময় এবং স্মৃতি সম্মতির একটি বড় অনুরাগী;)
শেগি

ওহ আমিও এটি পছন্দ করি :) আমার একমাত্র রিজার্ভেশন হ'ল আমি মনে করি কমপক্ষে স্বতন্ত্র ইনপুটগুলির জন্য কোনও উত্তর পরীক্ষা করা সম্ভব হবে।
আর্নৌল্ড

3

জেলি , 12 বাইট

Ḋב$ḍẸ¥ⱮP$Æm

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

-2 এলসিএমকে পণ্যটির সাথে প্রতিস্থাপন করার জন্য জোনাথন অ্যালানের পরামর্শকে (যেমন এলসিএমকে পূর্ণসংখ্যা দ্বারা গুণিত) ধন্যবাদ জানায় ।

ডেনিস খেয়াল করে আমি 2- সূচিও করতে পারি।


2

কাঠকয়লা , 26 বাইট

FN⊞υ×⁺²ι⁺³ιI∕LΦΠυ¬⌊Eυ﹪ιλΠυ

এটি অনলাইন চেষ্টা করুন! লিঙ্কটি কোডটির ভার্জোজ সংস্করণ। আশাহীনভাবে অদক্ষ (O (n! ²)) কেবলমাত্র n=4টিআইও-তে কাজ করে । ব্যাখ্যা:

FN⊞υ×⁺²ι⁺³ι

প্রতিবেশী উপাদানগুলির nপ্রথম nপণ্যগুলি ইনপুট করুন এবং গণনা করুন ।

I∕LΦΠυ¬⌊Eυ﹪ιλΠυ

এই সমস্ত কারণের পণ্য গ্রহণ করুন এবং সেই কারণগুলির মধ্যে কমপক্ষে একটি থাকার সংখ্যার অনুপাত গণনা করতে এটি ব্যবহার করুন।

30-বাইট কম ধীর সংস্করণটি কেবল ও (এন!) তাই n=6টিআইও-তে করতে পারেন :

F⊕N⊞υ⁺²ιI∕LΦΠυΣEυ∧μ¬﹪ι×λ§υ⊖μΠυ

এটি অনলাইন চেষ্টা করুন! লিঙ্কটি কোডটির ভার্জোজ সংস্করণ।

46-বাইট দ্রুত সংস্করণটি কেবল ও (এলসিএম (1..n + 2)) হয় তাই n=10টিআইও তে করতে পারেন :

FN⊞υ×⁺²ι⁺³ι≔⁰η≔⁰ζW∨¬η⌈Eυ﹪ηκ«≦⊕η≧⁺⌈Eυ¬﹪ηκζ»I∕ζη

এটি অনলাইন চেষ্টা করুন! লিঙ্কটি কোডটির ভার্জোজ সংস্করণ।

45-বাইট দ্রুত সংস্করণটি কেবল ও (2ⁿ) তাই n=13টিআইও-তে করতে পারেন :

⊞υ±¹FEN×⁺²ι⁺³ιF⮌υ⊞υ±÷×ικ⌈Φ⊕ι∧λ¬∨﹪ιλ﹪κλIΣ∕¹✂υ¹

এটি অনলাইন চেষ্টা করুন! লিঙ্কটি কোডটির ভার্জোজ সংস্করণ।

54-বাইটের দ্রুততম সংস্করণটি আরও দক্ষ LCM ব্যবহার করে যাতে n=18টিআইও-তে আপ করতে পারেন :

⊞υ±¹FEN×⁺²ι⁺³ιFEυ⟦κι⟧«W⊟κ⊞⊞Oκλ﹪§κ±²λ⊞υ±÷Π…κ²⊟κ»IΣ∕¹✂υ¹

এটি অনলাইন চেষ্টা করুন! লিঙ্কটি কোডটির ভার্জোজ সংস্করণ।


2

ওল্ফ্রাম ভাষা (গণিত) , 69 68 61 52 বাইট

Count[Range[#!],b_/;Or@@(# #-#&@Range[3,#]∣b)]/#!&

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

3-ইন্ডেক্স। প্রথমে আমি ব্যবহার করতে যাচ্ছিলাম LCM@@তবে বুঝতে পারছিলাম যে #!এটি আরও কম হবে ... তবে এখন এটির জন্য অনেক স্মৃতি Range[#!]...

2 বাইট শর্তে গল্ফ পরিচালিত, যা দুর্দান্ত ছিল।


পুরানো সংখ্যা সমাধান (56 বাইট):

N@Count[Range[5^8],b_/;Or@@Array[(# #-#)∣b&,#,3]]/5^8&

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

2-ইন্ডেক্স। আরও কার্যকর যখন #!>5^8( #>9, ধরে নেওয়া #হয় একটি পূর্ণসংখ্যা)।


1

পাইথন 2 , 78 বাইট

lambda n:sum(any(-~i%(j*-~j)<1for j in range(2,n+2))for i in range(10**7))/1e7

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

দশমিক +5 অঙ্কগুলিতে প্রত্যাশিত ফেরত দেয়; প্রশ্নের উপর মন্তব্যে পরামর্শ দেওয়ার জন্য নিরীহ ব্রুট ফোর্স অ্যাপ্রোচ এক্সএনর ব্যবহার করে ।

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