কত অনন্য প্রাইমস?


14

প্রাকৃতিক সংখ্যাকে উপস্থাপন করার একটি উপায় হ'ল মূল সংখ্যার এক্সপোজারকে গুণ করে। উদাহরণস্বরূপ, 6 টি 2 ^ 1 * 3 ^ 1 দ্বারা প্রতিনিধিত্ব করা যেতে পারে, এবং 50 টি 2 ^ 1 * 5 ^ 2 (যেখানে ^ ক্ষয়ক্ষতি নির্দেশ করে) দ্বারা প্রতিনিধিত্ব করা যেতে পারে। এই উপস্থাপনায় প্রাইমগুলির সংখ্যা অন্যান্য পদ্ধতির তুলনায়, উপস্থাপনের এই পদ্ধতিটি ব্যবহার করা আরও খাটো কিনা তা নির্ধারণ করতে সহায়তা করতে পারে। তবে যেহেতু আমি এগুলি হাত দ্বারা গণনা করতে চাই না, আমার এটি করার জন্য আমার একটি প্রোগ্রাম দরকার। তবে, বাড়ি পৌঁছানোর আগ পর্যন্ত আমাকে প্রোগ্রামটি মনে রাখতে হবে, এটি যতটা সম্ভব সংক্ষিপ্ত হওয়া দরকার।

তোমার কাজ:

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

ইনপুট:

একটি পূর্ণসংখ্যা এন যেমন 1 <n <10 ^ 12, কোনও সাধারণ পদ্ধতি দ্বারা নেওয়া।

আউটপুট:

পরিচিতিতে বর্ণিত রূপ হিসাবে ইনপুট উপস্থাপনের জন্য প্রয়োজনীয় স্বতন্ত্র প্রাইমগুলির সংখ্যা।

পরীক্ষার কেস:

24      -> 2 (2^3*3^1)
126     -> 3 (2^1*3^2*7^1)
1538493 -> 4 (3^1*11^1*23^1*2027^1)
123456  -> 3 (2^6*3^1*643^1)

এটি OEIS A001221

স্কোরিং:

এটি , বাইট জয়ের সর্বনিম্ন স্কোর!


3
সম্প্রতি অনেক প্রাথমিক প্রশ্ন! আমি এটা ভালোবাসি.
জিউসেপ


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

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

1
পরীক্ষার ক্ষেত্রে প্রাইমকে অন্তর্ভুক্ত করা উপকারী হবে। এছাড়াও, কিছু সংখ্যক ভাষা / পদ্ধতির জন্য বিশাল সংখ্যার জন্য পরীক্ষা করা শক্ত। কয়েকটি ছোট পরীক্ষার কেস ভাল হবে।
ডেনিস

উত্তর:


6

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

-1 বাইট লুইস মেন্ডোকে ধন্যবাদ

YFz

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

YF         Exponents of prime factors
  z        Number of nonzeros

আসল উত্তর:

Yfun

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

একটি ভার্জ Yfunউত্তর।

          (Implicit input)
Yf         Prime factorization
  u        Unique
   n       Numel
           (Implicit output)

1
মজা কেন? - ;-)
অ্যাডম

1
ক্রসড আউট 4 এখনও নিয়মিত 4
গ্রিফন

5

05 এ বি 1 , 2 বাইট

আরেকটি সুন্দর বিরক্তিকর উত্তর ...

fg

একটি পূর্ণ প্রোগ্রাম একটি সংখ্যার ইনপুট গ্রহণ করে ফলাফল মুদ্রণ করে

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

কিভাবে?

fg - implicitly take input
f  - get the prime factors with no duplicates
 g - get the length
   - implicit print

5

গণিত, 7 বাইট

PrimeNu

হ্যাঁ, একটি অন্তর্নির্মিত আছে।

গণিত, 21 বাইট

Length@*FactorInteger

দীর্ঘ পথ।


নক্ষত্রের কারণ কী? Length@FactorIntegerএকই না ?
সংখ্যামানাক

1
Length@*FactorIntegerএকটি খাঁটি ফাংশন উত্পাদন করে: এর গঠন Lengthএবং FactorInteger। আমি সংজ্ঞা দিতে পারি fun=Length@*FactorIntegerএবং তারপরে কল করতে পারি fun[1001]। অন্যদিকে, এর Length@FactorIntegerঅর্থ Length[FactorInteger]ও মূল্যায়ন হবে 0
মিশা লাভরভ


4

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

f=lambda n,p=2,k=1:n/p and[f(n,p+1),k+f(n/p,p,0)][n%p<1]

এটি কি এখানে ডেনিসের উত্তর বন্দর ?
জোনাথন অ্যালান

1
@ জোনাথান অ্যালান হ্যাঁ, পরিবর্তে অনন্য প্রাথমিক কারণগুলি গণনা করতে সংশোধিত হয়েছে।
orlp

4

রেটিনা , 31 30 বাইট

&`(?!(11+)\1+$)(11+)$(?<=^\2+)

ইনপুট আনারিতে আছে।

1 মার্টিন ইন্ডারকে 1 বাইট গল্ফ করার জন্য ধন্যবাদ!

এটি অনলাইন চেষ্টা করুন!(দশমিক-থেকে-ইউনিারি রূপান্তরকারী অন্তর্ভুক্ত)

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

যেহেতু প্রোগ্রামটি &সংশোধনকারী সহ একটি একক রেজেক্স সমন্বিত , তাই রেটিনা কেবল ওভারল্যাপিং মিলগুলির পরিমাণ গণনা করে । ইনপুটটি 1 এর n পুনরাবৃত্তি নিয়ে গঠিত বলে ধরে নেওয়া হয় এবং অন্য কিছু নয় ।

নেতিবাচক চেহারা

(?!(11+)\1+$)

মধ্যে অবস্থানগুলি এ ম্যাচ 1 এর যে না দুই বা ততোধিক দ্বারা অনুসরণ 1 'গুলি ( 11+), একই পরিমাণ এক বা একাধিক পুনরাবৃত্তির দ্বারা অনুসরণ 1 ' গুলি ( \1+), ইনপুট সালের শেষ নাগাদ অনুসৃত ( $)।

কোন যৌগিক সংখ্যা AB সঙ্গে A, B> 1 হিসেবে লেখা যেতে পারে এর পুনরাবৃত্তির একটি এর পুনরাবৃত্তির 1 , তাই lookahead শুধুমাত্র দ্বারা অনুসরণ অবস্থানে সাথে মেলে পি এর পুনরাবৃত্তির 1 , যেখানে P = 1 বা পি প্রধানমন্ত্রী হয়।

রেজেক্স

(11+)$

নিশ্চিত করে তোলে পি> 1 অন্তত দুই পদ্ধতির মাধ্যমে আরো 1 'গুলি ( 11+) এবং দোকানে লেজ 1 দ্বিতীয় ক্যাপচার দলের গুলি ( \2)।

অবশেষে, ইতিবাচক চেহারা

(?<=^\2+)

যাচাই করে জানাচ্ছেন যে সমগ্র ইনপুট নিয়ে গঠিত KP ঘটনার ( ট ≥ 1 এর) 1 , যে যাচাই পি ভাগ ইনপুট।

সুতরাং, প্রতিটি ম্যাচ একটি অনন্য প্রাথমিক বিভাজক পি অনুরূপ ।


4

বাশ + জিএনইউ ইউটিলিটিস, 33

  • @ ডেনিসকে ধন্যবাদ 1 বাইট সংরক্ষিত
factor|grep -Po ' \d+'|uniq|wc -l

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

ব্যাখ্যা

factor|                            # Split input into prime factors
       grep -Po ' \d+'|            # group factors onto lines
                       uniq|       # remove duplicates
                            wc -l  # count the lines

1
grep -Po ' \d+'উপর একটি বাইট সংরক্ষণ tr \ \\n|sed 1d
ডেনিস

দুর্ভাগ্যক্রমে, grep -Po '( \d+)\1*'ইনপুট 46 এর জন্য ব্যর্থ ।
ডেনিস

@ ডেনিস ধন্যবাদ - আমি আপনার মূল পরামর্শটি ব্যবহার করে এটি ঠিক করেছি
ডিজিটাল ট্রমা

3

জেলি , 3 বাইট

খুব বিরক্তিকর উত্তর ...

ÆFL

একটি মোনাডিক লিঙ্ক একটি নম্বর নিয়ে এবং একটি নম্বর ফিরিয়ে দেয়

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

কিভাবে?

ÆFL - Link: number, n
ÆF  - prime factorisation as a list of prime, exponent pairs
  L - length

1
কীভাবে মিস করলেন Æv?
আমার সর্বনাম

এটি সহজ ছিল - আমি এর জন্য কখনও ব্যবহার করিনি এবং উইকিতে তালিকাটি অনুসন্ধান করি নি।
জোনাথন অ্যালান

আপনি কীভাবে পরমাণু তালিকা এবং কুইকের তালিকা ছাড়াই জেলি অক্ষরগুলি টাইপ করেন?
আমার সর্বনাম

1. Æহল Alt কোড 0198. 2. আপনি একটি কীবোর্ড সেট আপ করতে পারেন (আমার নেই)। 3. কোড পৃষ্ঠা।
জোনাথন অ্যালান



3

এলিস , 10 বাইট

/o
\i@/Dcd

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

ব্যাখ্যা

/o
\i@/...

লিনিয়ার পাটিগণিত-ভারী প্রোগ্রামগুলির জন্য এটি কেবলমাত্র স্ট্যান্ডার্ড কাঠামো যা দশমিক I / O প্রয়োজন। আসল প্রোগ্রামটি নিজেই ঠিক তখন:

Dcd

যা আছে:

D    Deduplicate prime factors. Does what it sounds like: for every p^k which
     is a divisor n, this divides n by p^(k-1).
c    Push the individual prime factors of n. Since we've deduplicated them
     first, the number of factors is equal to the value we're looking for.
d    Push the stack depth, i.e. the number of unique prime factors.

3

জাভাস্ক্রিপ্ট 45 বাইট

* এসইজেপিএমের জন্য একটি ব্যাখ্যার জন্য অনুরোধ করুন: আমি এখানে যা করছি তা হ'ল - এটি 2 - এন থেকে চলছে (যা পরিবর্তিত হয় এবং শেষ পর্যন্ত এটি সবচেয়ে বড় মৌলিক উপাদান হবে) - এখন যদি বর্তমান সংখ্যার বিভাজন NI কেবল একবার এটি গণনা করতে চায় (এমনকি যদিও এটি 2 * 2 * 2 * 3 - 2 এর গুণক হতে পারে একবার গণনা করা হয়) - সুতরাং "জে" ছবিতে উপস্থিত হবে, যখন ফানসিওনের কলটিতে জ নির্দিষ্ট করা হয়নি - j এর মান পাবেন " অপরিবর্তিত ", এবং যখন n% i == 0 তখন আমি পরের কলটিতে j = 1 দিয়ে ফাংশনটি কল করি) - এবং তারপরে আমি কেবল 1 যুক্ত করি যখন জে অপরিবর্তিত কোনটি ঠিক! j + ফাংশন (n / i, i, (( j = 1 বা মাত্র 1%)। আমি এখনও এটিকে পরিবর্তন করতে পারি না কারণ এটি আবারও আমি বিভাজ্য হতে পারি (2 * 2 * 3) তবে জে 1 এর সমান হবে এবং এটি একটি ফ্যাক্টর হিসাবে গণনা করবে না। আশা করি আমি এটি যথেষ্ট ভাল ব্যাখ্যা করেছি।

P=(n,i=2,j)=>i>n?0:n%i?P(n,i+1):!j+P(n/i,i,1)

console.log(P(1538493)==4);
console.log(P(24)==2);
console.log(P(126)==3);
console.log(P(123456)==3);

যদি শেষ প্রাইমটির থেকে এটির চেয়ে বেশি বড় কল থাকে তবে সর্বাধিক কল স্ট্যাক থাকবে - যদি এটি একটি সমস্যা হয় তবে আমি একটি পুনরাবৃত্তি করতে পারি


আপনি কি এই উত্তরের জন্য একটি ব্যাখ্যা লিখতে আপত্তি করতে চান? বাকি উত্তরগুলি থেকে এটি একটি সাধারণ পদ্ধতির ব্যবহার বলে মনে হচ্ছে।
এসইজেপিএম

@ এসজেপিএম আমি সেখানে কিছু ব্যাখ্যা যুক্ত করেছি
ড্যানিয়েলইন্ডি

1
এফওয়াইআইআই বেশিরভাগ কোড-গল্ফ চ্যালেঞ্জের জন্য আমরা অসীম কল স্ট্যাক / অসীম সংস্থান ধরে নিতে পারি (মূলত যদি প্রশ্নটি অন্যথায় না বলে থাকে)।
জোনাথন অ্যালান

3

সিজেম , 7 5 বাইট

মার্টিন ইন্ডারকে 2 বাইট ছাড়ার জন্য ধন্যবাদ!

{mF,}

বেনামি ব্লক (ফাংশন) যা স্ট্যাকের ইনপুট নম্বরটি প্রত্যাশা করে এবং আউটপুট নম্বর দ্বারা এটি প্রতিস্থাপন করে।

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

ব্যাখ্যা

{   }   e# Define block
 mF     e# List of (prime, exponent) pairs
   ,    e# Length




2

আসলে , 2 বাইট

তবুও আরও চমকপ্রদ উত্তর ... --- জে অ্যালান

yl

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

প্রথম অক্ষর দ্বারা প্রতিস্থাপন করা যেতে পারে w


যথেষ্ট, ডুড ...: পি
সম্পূর্ণরূপে

@ ক্রিভারিটিম আমি প্রতিশ্রুতি দিচ্ছি যে এটি আমার শেষ গল্ফিং- ভাষাটির উত্তর (আমার কাছে কেবল 4: পি আছে)
মিঃ এক্সকোডার


2

পাইথন 3 , 68 67 বাইট

@ মিস্টার এক্সকোডারকে ধন্যবাদ 1 বাইট সরানো হয়েছে

lambda n:sum(n%k<all(k%j for j in range(2,k))for k in range(2,n+1))

এবার সবচেয়ে বড় পরীক্ষার কেস বেরিয়েছে। এটি অনলাইন চেষ্টা করুন!



2

আর + সংখ্যা, 30 14 বাইট

16 বাইটস সরানো হয়েছে @ জিউজ্পেকে ধন্যবাদ

numbers::omega

এছাড়াও, অনলাইনে চেষ্টা করে দেখুন এখানে !! @ জিউজ্পে লিঙ্ক


আপনি বাদ পারে f=function(x)এবং (x)যেমন numbers::omegaএকটি ফাংশন ইতিমধ্যে। তবে numbersআর এর পক্ষে মানসম্পন্ন নয়, আপনার উত্তরটি "আর + সংখ্যা" করা উচিত। এছাড়াও, আপনার একটি টিআইও লিঙ্ক অন্তর্ভুক্ত করা উচিত । তবুও, +1, খুব সুন্দর।
জিউসেপ

@ জিউসেপ, আপনি খুব সুন্দর আপনার সাহায্যের জন্য ধন্যবাদ. বিটিডাব্লু, আপনার কিছু অন্তর্দৃষ্টিপূর্ণ উত্তর ছাড়াও, আমি আপনার পরামর্শ অনুসারে আর-তে গল্ফ করার টিপস পরীক্ষা করে দেখেছি । কিছু বাস্তব রত্ন আছে। যাইহোক, আমি আপনার প্রস্তাবগুলি দিয়ে আমার উত্তর আপডেট করব। এছাড়াও, আপনার MATLসমাধানটি খুব সুন্দর (গতকাল +1)।
জোসেফ উড

এনপি, আপনার যদি প্রশ্ন থাকে তবে নির্দ্বিধায় আমাকে আড্ডায় বা আমার কোনও উত্তর সম্পর্কে মন্তব্য করুন।
জিউসেপ

@ জিউজেপ্পে "আর + সংখ্যা" স্পষ্টভাবে উল্লেখ করার জন্য কি মেটা sensকমত্য রয়েছে? দেখে মনে হচ্ছে আমরা যদি অতিরিক্ত প্যাকেজটি বর্ণনা করি তবে আমাদের এটিকে স্পষ্টভাবে কল করার বাইটগুলি সংরক্ষণ করতে সক্ষম হওয়া উচিত numbers::। অন্যথায়, আমার কাছে এটি importঅন্য যে কোনও ভাষায় ব্যবহার করার মতো ।
বিএলটি

(স্ক্রোলগুলি নিচে নেমে যায় এবং এর অজগর উদাহরণটি দেখে ...) আমার ধারণা আমি তখন বিস্তৃত মেটা sensকমত্য নিয়ে ভাবছি। এটা ঠিক আমার কাছে নির্বোধ মনে হয়।
বিএলটি



1

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

-4 বাইট @ লাইকনি ধন্যবাদ

f n=sum[1|x<-[2..n],gcd x n>1,all((>)2.gcd x)[2..x-1]]

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

ব্যাখ্যা

মূলত সর্বাধিক বৃহত্তর প্রাইমগুলি উত্পন্ন করে nএন এর গুণক হওয়ার জন্য এগুলি ফিল্টার করে এবং তারপরে ফলাফলের দৈর্ঘ্য নেয়।

f n=                                                   -- main function
    sum[                                             ] -- output the length of the list
        1|x<-[2..n],                                   -- consider all potential primes <=n
                                                       -- and insert 1 into the list if predicates are satisfied
                    gcd x n>1,                         -- which are a factor of n
                              all(          )[2..x-1]  -- and for which all smaller numbers satisfy
                                  (>)2.                -- 2 being larger than
                                       gcd x           -- the gcd of x with the current smaller number

আপনি sum[1|x<- ... ]পরিবর্তে ব্যবহার করতে পারেন length
লাইকনি


1

আরবিএল , 28 বাইট

len(unique(primefactors(n)))

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

এটি একটি খুব আক্ষরিক সমাধান


আমি এই দিকে তাকিয়ে যাচ্ছিলাম "আরে, এক মিনিট অপেক্ষা করুন, এটি একটি স্নিপেট!" এবং তারপরে আমি দেখছি ... এটি কি অন্তর্নিহিত আইও সহ একটি অ-রহস্যময় ভাষা হওয়ার কথা ?!
সম্পূর্ণরূপে

@ আইক্রিরিটিম অভিনন্দন, আপনি এই ভাষাটির মূল কারণগুলির একটি আবিষ্কার করেছেন।
এটাকো


0

পাইথন 2 ,  63  55 বাইট

আরও অনেক আকর্ষণীয় উত্তর ...

-8 ধন্যবাদ বাইট জনাথন Frech (থেকে মৌলিক সংখ্যার ফলাফল পোস্ট সমন্বয় জন্য একটি ডিফল্ট সঙ্গে একটি আর্গুমেন্ট ব্যবহার 0করতে 1- অনেক ভালো একটি মোড়ানো ল্যামডা চেয়ে !!)

f=lambda n,o=1:sum(n%i+f(i,0)<1for i in range(2,n))or o

একটি পুনরাবৃত্ত ফাংশন একটি ধনাত্মক পূর্ণসংখ্যার গ্রহণ করে nএবং একটি ধনাত্মক পূর্ণসংখ্য, গণনা প্রদান করে।

এটি অনলাইন চেষ্টা করুন! সত্যিই অদক্ষ, অন্য পরীক্ষার ক্ষেত্রেও বিরক্ত করবেন না।



@ জোনাথনফ্রেচ ধন্যবাদ, এটি অনেক পরিস্কার।
জোনাথন অ্যালান

0

জে, 12 বাইট

{:@$@(__&q:)

q:জে এর প্রধান এক্সটেনশন ফাংশন, এটিকে যুক্তি প্রদান করে এমন __একটি ম্যাট্রিক্স তৈরি হয় যার প্রথম সারিতে সমস্ত ননজারো প্রাইম ফ্যাক্টর এবং যার দ্বিতীয় সারিটি তাদের এক্সটোনার হয়।

আমরা $সেই ম্যাট্রিক্সের আকারটি নিয়েছি - কলামগুলি সারি করে - কলামগুলির সংখ্যাটি আমরা যা উত্তর চেয়েছি তা।

{: আমাদের এই দুটি আইটেমের শেষ আইটেমটি দেয় (নাম্বার সারি, নাম কলাম) তালিকা, এবং সেইজন্য উত্তর।

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



0

জাভাস্ক্রিপ্ট ES6, 56 টি অক্ষর

n=>eval(`for(q=2,r=0;q<=n;++q)n%q||(n/=q,r+=!!(n%q--))`)

টেস্ট:

f=n=>eval(`for(q=2,r=0;q<=n;++q)n%q||(n/=q,r+=!!(n%q--))`)
console.log([24,126,1538493,123456].map(f)=="2,3,4,3")

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