এটি প্রায় এক প্রাথমিক ... প্রায়


30

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

একইভাবে, আমরা কে- লেস্টামাল প্রাইমকে কে প্রাইম সংখ্যার গুণফল হিসাবে সংজ্ঞায়িত করতে পারি । উদাহরণস্বরূপ, 40 হ'ল চতুর্থ 4-প্রায় প্রধান; 40 = 5 * 2 * 2 * 2, 4 টি গুণকের পণ্য।

আপনার টাস্ক একটি প্রোগ্রাম / ফাংশন যে দুটি পূর্ণসংখ্যার গ্রহণ লিখতে হয় এন এবং k ইনপুট এবং আউটপুট হিসাবে / আসতে এন -almost মৌলিক সংখ্যা। এটি একটি কোড-গল্ফ, তাই বাইটের মধ্যে সংক্ষিপ্ততম প্রোগ্রামটি জিতে।

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

n, k => output
n, 1 => the nth prime number
1, 1 => 2
3, 1 => 5
1, 2 => 4
3, 2 => 9
5, 3 => 27

বিবিধ

এ জাতীয় বন্ধ ফর্ম যদি বিদ্যমান থাকে তবে আপনাকে সাধারণ বদ্ধ ফর্ম ব্যতীত অন্য কোনও উপায়ে নিজেই প্রাইমগুলি তৈরি করতে হবে।


আপনার প্রথম উদাহরণে আপনার গণিত পরীক্ষা করুন: 40 টি 5 * 2 * 2 * 2 * 2 এর সমান নয়।
গ্যামারকর্পস

@ গ্যামার কর্পস আহ, হ্যাঁ, ধন্যবাদ
কনর ও'ব্রায়েন

আপনি কীভাবে নবম কে-প্রায় প্রাইম সংজ্ঞায়িত করবেন ? কে-প্রায় প্রাইমগুলি কোন ক্রমে থাকে তা নির্ধারণ করে?
গ্যামারকর্পস

3
আমি আপনার অভিব্যক্তি মনে করেন fপরিপ্রেক্ষিতে এর f[n,1]সঠিক, যেহেতু প্রায়-মৌলিক সংখ্যার তালিকা বিজোড় সংখ্যা থাকতে (যেমন গত দুটি উদাহরণ, যা দুই একটি ক্ষমতা ও একটি মৌলিক পণ্য হিসাবে ব্যক্ত করা যায় এমন নয়)। (এবং এটি বলছে যে f[n,1] == 2*f[n,1]।)
2012rcampion

1
সরল বদ্ধ ফর্ম নিষিদ্ধ কেন?
ক্যালকুলেটরফলাইন

উত্তর:




4

পাইকে (কমিট 29), 8 বাইট (অযৌক্তিক)

.fPlQq)e

ব্যাখ্যা:

         - autoassign Q = eval_or_not(input())
.f    )  - First eval_or_not(input) of (^ for i in range(inf))
  P      -    prime_factors(i)
   l     -   len(^)
     q   -  ^==V
    Q    -   Q
       e - ^[-1]

4

জুলিয়া, 84 78 59 57 বাইট

f(n,k,i=1)=n>0?f(n-(sum(values(factor(i)))==k),k,i+1):i-1

এটি একটি পুনরাবৃত্ত ফাংশন যা দুটি পূর্ণসংখ্যা গ্রহণ করে এবং একটি পূর্ণসংখ্যা ফেরত দেয়। এখানে দৃষ্টিভঙ্গি হ'ল বিপরীতে মূল ফ্যাক্টরীকরণে বিফলকারীদের যোগফল পরীক্ষা করা k

Ungolfed:

function f(n, k, i=1)
    # We initialize a counter i as a function argument.

    # Recurse while we've encountered fewer than n k-almost primes
    if n > 0
        # If the sum of the exponents in the prime factorization of i is
        # equal to k, there are k prime factors of i. We subtract a boolean
        # from n, which is implicitly cast to an integer, which will
        # decrement n if i is k-almost prime and leave it as is otherwise.
        return f(n - (sum(values(factor(i))) == k), k, i + 1)
    else
        # Otherwise we return i-1 (i will have been incremented one too
        # many times, hence the -1)
        return i - 1
    end
end

4

জেলি, 9 বাইট

ÆfL=³
ç#Ṫ

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

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

Ç#Ṫ    Main link. Left input: k. Right input: n.

Ç      Apply the helper link to k, k + 1, k + 2, ... until...
 #       n matches are found.
  Ṫ    Retrieve the last match.


ÆfL=³  Helper link. Left argument: k (iterator)

Æf     Yield the prime factors of k.
  L    Compute the length of the list, i.e., the number of prime factors.
   =³  Compare the result with k (left input).

1
আমি এমন কোনও এনকোডিং সম্পর্কে অবগত নই যা এই 9 টি অক্ষরকে 9 বাইট হিসাবে সংরক্ষণ করতে পারে।
ওলেহ প্রিপিন

1
জেলি একটি কাস্টম এনকোডিং ব্যবহার করে যা 256 টি অক্ষরকে বোঝায় যা এটি একক বাইটগুলির সাহায্যে বোঝে।
ডেনিস

3

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

,1{hH&t<NḋlH;N}ⁱ⁽t

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

                      Implicit input, say [5, 3]
,1                    Append 1 to the input list. [5, 3, 1]
  {           }ⁱ⁽     Repeat this predicate the number of times given by
                        the first element of the list (5),
                        on the rest of the list [3, 1]
   hH&                Let's call the first element H
      t<N             There is a number N greater than the second element
         ḋ            Whose prime factorization's
          l           length
           H          is equal to H
            ;N        Then, pair that N with H and let that be input for
                      the next iteration
                 t    At the end of iterations, take the last N
                      This is implicitly the output

1

গণিত, 56 51 বাইট

Last@Select[Range[2^##],PrimeOmega@#==n&/.n->#2,#]&

সতর্কতা: এটি তাত্ত্বিক। কোনও মান> 4 এর জন্য দৌড়াবেন না। আরও দক্ষ এক্সপ্রেশন দিয়ে 2 ^ ## প্রতিস্থাপন করুন।


এটি কাজ করে না n=1
আইপিওলার

এছাড়াও যেহেতু PrimeOmega[1]মূল্যায়ন করা হয় 0, &&#>1তা নিরর্থক is
আইপিওলার

1

গণিত, 53 49 বাইট

Cases[Range[2^(#2+#)],x_/;PrimeOmega@x==#2][[#]]&

একটি শিথিল উপরের সীমানার উপর ভিত্তি করে পূর্ণসংখ্যার একটি তালিকা তৈরি করে। PrimeOmegaবহুগুণ সহ প্রধান উপাদানকে গণনা করে, কে- সর্বপ্রথম প্রধান Casesতালিকা থেকে নেওয়া হয় এবং সেই উপসেটের n তম সদস্যকে ফিরিয়ে দেওয়া হয়।


2 ^ (0 + ##), বা মাত্র 2 ^ ## কাজ করে।
ক্যালকুলেটরফলাইন

@ ক্যাটসআরএফ্লুফি 2^Sequence[1,2]পরবর্তীকালে কেন ব্যর্থ হয় তা দেখার চেষ্টা করুন ।
আইপিওলার

1

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

আমি এখনও হাস্কেলের এক নবাগত হিসাবে সম্ভবত আরও অনেক গল্ফ করা যেতে পারে ফাংশন qযুক্তি কারণের, এবং সংখ্যা ফেরৎ fযে নিতে পেতে ব্যবহারসমূহ nthসমস্ত নম্বর আছে থেকে তৈরি একটি তালিকা উপাদান kকারণের।

q n|n<2=0|1>0=1+q(div n ([x|x<-[2..],mod n x<1]!!0))
f n k=filter(\m->q m==k)[1..]!!n-1

1

এমএটিএল, 14 বাইট

:YqiZ^!XpSu1G)

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

:               % Take first input n implicitly, make range 1 to n
 Yq             % Get corresponding prime numbers (1st prime to nth prime)
   i            % Take the second input k
    Z^          % Take the k-th cartesian power of the primes list 
                % (Getting all combinations of k primes)
      !Xp       % Multiply each combination (2*2*2, 2*2*3, 2*2*5, ...)
         Su     % Sort and unique
           1G)  % Take the n-th element of the result

0

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

এটি একটি খুব সাধারণ উদ্দীপনা কাজ। এটি 2 থেকে দিয়ে শুরু যে সংখ্যা পরীক্ষা sympyএর factorintপর্যন্ত এটি খুঁজে পেয়েছে ফাংশন n k-almost মৌলিক, যা সময়ে, ফাংশনটি nএগুলোর তম।

import sympy
def a(n,k):
 z=1;c=0
 while c<n:z+=1;c+=(sum(sympy.factorint(z).values())==k)
 return z

Ungolfed:

আমি ব্যবহার করি sum(factorint(a).values())কারণ factorintজোড়ের একটি অভিধান প্রদান করে factor: exponent। অভিধান (বহিঃপ্রকাশ) মান দখল এবং তাদের summing আমাকে বলে আছে কত মৌলিক উত্পাদক এবং এইভাবে কি kএই k-almost মৌলিক নয়।

from sympy import factorint
def almost(n, k):
    z = 1
    count = 0
    while count < n: 
        z += 1
        if sum(factorint(a).values()) == k:
            count += 1
    return z

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