সর্বাধিক প্রধান শক্তিগুলি সন্ধান করুন


23

একটি প্রাইম পাওয়ার হ'ল ধনাত্মক পূর্ণসংখ্যা n যা ফ = এন = পি কে আকারে লেখা যেতে পারে যেখানে পি একটি মৌলিক এবং কে ধনাত্মক পূর্ণসংখ্যা। উদাহরণস্বরূপ, কিছু প্রধান শক্তি হ'ল [2, 3, 5, 4, 9, 25, 8, 27, 125]

এরপরে, ২ এর প্রধান শক্তিগুলি বিবেচনা করুন These এগুলি [2, 4, 8, 16, ...]2 কে আকারে রয়েছে এবং লেখা যেতে পারে । ২০ এর নীচে প্রধান শক্তি বিবেচনা করার সময় এগুলি সমস্ত অন্তর্ভুক্ত করা হবে However তবে, 16 এই সীমাতে 2 এর বেস প্রাইম সহ সর্বাধিক প্রধান শক্তি। একজন প্রধানমন্ত্রী ক্ষমতা পি হয় সর্বোচ্চ যদি এটা সর্বোচ্চ শক্তি একটি সীমার মধ্যে পি যে সীমার মধ্যে। আমরা প্রতিটি পরিসরে সর্বোচ্চ সর্বোচ্চ শক্তি সম্পর্কে আগ্রহী তাই সমস্ত নিম্ন মৌলিক শক্তিগুলি অবশ্যই বাদ দিতে হবে luded

আপনার লক্ষ্য একটি ফাংশন বা প্রোগ্রাম যা একটি ধনাত্মক পূর্ণসংখ্যা লাগে লিখতে হয় এন এবং আউটপুট সর্বোচ্চ সীমার মধ্যে মৌলিক ক্ষমতা [2, 3, 4, ..., n]

সর্বোচ্চ প্রধানমন্ত্রী শক্তি এবং আরও অনেকের সংজ্ঞাটি স্পষ্ট করার জন্য @ পিটার টেলরকে ধন্যবাদ জানাই Thanks

বিধি

  • এটি তাই আপনার কোডটি যতটা সম্ভব সংক্ষিপ্ত করুন।
  • সর্বাধিক মৌলিক ক্ষমতা কোনো অনুক্রমে আউটপুট হতে পারে কিন্তু কোন সদৃশ হতে হবে।

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

n      result
1      []
2      [2]
3      [2, 3]
4      [3, 4]
5      [3, 4, 5]
6      [3, 4, 5]
7      [3, 4, 5, 7]
20     [5, 7, 9, 11, 13, 16, 17, 19]
50     [11, 13, 17, 19, 23, 25, 27, 29, 31, 32, 37, 41, 43, 47, 49]
100    [11, 13, 17, 19, 23, 25, 29, 31, 37, 41, 43, 47, 49, 53, 59, 61, 64, 67, 71, 73, 79, 81, 83, 89, 97]
10000  <1229 results>
       [101, 103, 107, 109, 113, 127, 131, 137, 139, 149, ..., 9887, 9901, 9907, 9923, 9929, 9931, 9941, 9949, 9967, 9973]

10000 এর জন্য সর্বাধিক প্রাথমিক শক্তির সম্পূর্ণ তালিকা এখানে পাওয়া যাবে

উত্তর:


16

জেলি , 7 4 বাইট

æḟÆR

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

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

æḟÆR  Main link. Argument: n

  ÆR  Prime range; yield all primes in [1, ..., n].
æḟ    Power floor; round n down to the nearest power of each prime in the range.

ওহ তাই সুস্পষ্ট একবার একবার দেখে!
জোনাথন অ্যালান

15
Power floorকি
হ্যাক

1
এই পোস্টটি আমাকে আনুষ্ঠানিকভাবে জেলি শিখতে বাধ্য করেছিল।
চ্যান্ডলার ওয়াটসন

10

গণিত, 44 43 40 বাইট

মাইল এবং মার্টিন ইন্ডারকে ধন্যবাদ 4 বাইট সংরক্ষণ করা হয়েছে

n#^⌊#~Log~n⌋&/@Select[Range@n,PrimeQ]

(x=Prime@Range@PrimePi@#)^⌊x~Log~#⌋&

এবং হয় 3বাইট অক্ষর U+230Aএবং U+230Bপ্রতিনিধিত্বমূলক \[LeftFloor]এবং\[RightFloor] যথাক্রমে।

ব্যাখ্যা:

এখানে চিত্র বর্ণনা লিখুন

খাঁটি ফাংশন। #সংক্ষিপ্ত Slot[1]যার জন্য প্রথম যুক্তিকে উপস্থাপন করে FunctionPrimePi@#প্রাইমগুলির সংখ্যা কম বা তার সমান গণনা করা হয় #, Range@PrimePi@#প্রথম PrimePi[#]ইতিবাচক পূর্ণসংখ্যার Prime@Range@PrimePi@#তালিকা এবং প্রাইমগুলির তালিকাটি এর চেয়ে কম বা সমান #(এটি একটি বাইটের চেয়ে কম Select[Range@#,PrimeQ])। প্রতীক xহয় Setএই তালিকায় সমান, তারপর উত্থাপিত Power ⌊x~Log~#⌋, যার মধ্যে তালিকা Floor[Log[n,#]]প্রত্যেকের জন্য nx। ম্যাথামেটিকায়, Powerএকই দৈর্ঘ্যের অন্য তালিকার তালিকায় একটি তালিকা উত্থাপনের ফলে তাদের সংশ্লিষ্ট উপাদানগুলির শক্তির তালিকার ফলাফল।


আমি ভেবেছিলাম এর Range@#~Select~PrimeQচেয়ে কম হবে Prime@Range@PrimePi@#... তবে এটি একটি টাই
গ্রেগ মার্টিন

এটি একটি সুন্দর চিত্র। এটি কি বিল্টিন ব্যবহার করে তৈরি করা হয়েছিল বা ম্যানুয়ালি তৈরি করা হয়েছিল?
মাইল মাইল

@ মাইলগুলি ব্যবহার করে এটি তৈরি করা হয়েছিলTreeForm
নেজেনিসিস

ধন্যবাদ। আমি এটি কখনও দেখেছি মনে নেই, তবে স্পষ্টতই এটি প্রায় চিরকাল ছিল।
মাইল

7

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

ZqG:!^tG>~*X>

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

ব্যাখ্যা

        % Implicitly grab the input as a number (N)
Zq      % Get an array of all primes below N
G:!     % Create an array from [1...N]
^       % Raise each prime to each power in this array which creates a 2D matrix
        % where the powers of each prime are down the columns
tG>~    % Create a logical matrix that is TRUE where the values are less than N
*       % Perform element-wise multiplication to force values > N to zero
X>      % Compute the maximum value of each column
        % Implicitly display the resulting array

7

জেলি , 8 বাইট

ÆR*ÆE€»/

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

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

ÆR*ÆE€»/  Main link. Argument: n

ÆR        Prime range; yield all primes in [1, ..., n].
   ÆE€    Prime exponents each; yield the exponents of 2, 3, 5, ... of the prime
          factorization of each k in [1, ..., n].
          For example, 28 = 2² × 3⁰ × 5⁰ × 7¹ yields [2, 0, 0, 1].
  *       Exponentiation; raise the elements of the prime range to the powers
          of each of the exponents arrays.
      »/  Reduce the columns by maximum.

6

জেলি , 12 9 বাইট

RÆEz0iṀ$€

এটি অনলাইন চেষ্টা করুন!(10000 কেসের জন্য পদ্ধতিটি খুব ধীর)।

কিভাবে?

তালিকা তৈরী করে পি ক্রমানুসারে পি

RÆEz0iṀ$€ - Main link: n                      e.g. 7
R         - range(n)                          [1 ,2  ,3    ,4  ,5      ,6    ,7]
 ÆE       - prime factor vector (vectorises)  [[],[1],[0,1],[2],[0,0,1],[1,1],[0,0,0,1]]
   z0     - transpose with filler 0           [[0,1,0,2,0,1,0],[0,0,1,0,0,1,0],[0,0,0,0,1,0,0],[0,0,0,0,0,0,1]]
       $€ - la$t two links as a monad, for €ach       ^             ^                   ^                   ^
     i    -     first index of                        4             3                   5                   7
      Ṁ   -     maximum                       [4,3,5,7]

5

পাইথ, 13 বাইট

m^ds.lQdfP_TS

এখানে চেষ্টা করুন!

        f   S -  filter(v, range(1, input))
         P_T  -   is_prime(T)
m             - map(v, ^)
    .lQd      -    log(input, d)
   s          -   int(^)
 ^d           -  d ** ^

আমি পাইথের সাথে কিছুক্ষণ খেলিনি যে কোনও গল্ফিং টিপস প্রশংসা করা হয়।


5

এর চেয়ে কম সংখ্যক গণিত সমাধান পাচ্ছি না solution নেজিনিসিসের , তবে আমি ভেবেছিলাম যে আমি কয়েকটি ( আশাবাদী আকর্ষণীয়) বিকল্প পদ্ধতির প্রস্তাব দেব।

গণিত, 65 বাইট

#/#2&@@@({#,#}&/@Range@#~Select~PrimeQ//.{a_,b_}/;a<=#:>{b a,b})&

প্রথমে আমরা {#,#}&/@Range@#~Select~PrimeQউপযুক্ত পরিসরে সমস্ত প্রাইমগুলির একটি তালিকা তৈরি করতে ব্যবহার করি তবে প্রতিটি প্রাইমের অর্ডারযুক্ত জোড়া দিয়ে পছন্দ করি { {2,2}, {3,3}, ...}। তারপরে আমরা সেই তালিকাটিতে বারবার প্রতিস্থাপনের নিয়মের সাথে পরিচালনা করি {a_,b_}/;a<=#:>{b a,b}, যা অর্ডারড জোড়ের প্রথম উপাদানটিকে দ্বিতীয় দ্বারা ইনপুট ছাড়িয়ে যাওয়া না হওয়া পর্যন্ত দ্বিতীয় দ্বারা গুণ করে। তারপরে আমরা #/#2&@@@আউটপুটটিতে প্রয়োগ করি , প্রতিটি অর্ডার করা জোড়ার জন্য, প্রথম উপাদানটি দ্বিতীয় দ্বারা বিভক্ত। (এগুলি অন্তর্নিহিত প্রধান অনুসারে বাছাই করা হয়েছে: একটি উদাহরণ আউটপুট {16, 9, 5, 7, 11, 13, 17, 19})

গণিত, 44 বাইট

Values@Rest@<|MangoldtLambda@#->#&~Array~#|>&

ভন ম্যানগোল্ড্ট ফাংশনটি Λ(n)একটি আকর্ষণীয় সংখ্যা তত্ত্বের ফাংশন: এটি 0 এর সমান হয় যদি না nকোনও প্রধান শক্তি পি কে হয় , তবে এটি সমান হয় log p(না log n)। (এগুলি প্রাকৃতিক লগগুলি তবে এটি কোনও বিষয় নয়)) সুতরাংMangoldtLambda@#->#&~Array~# নিয়মের একটি অ্যারে তৈরি হয় { 0->1, Log[2]->2, Log[3]->3, Log[2]->4, Log[5]->5, 0->6, ... }যার দৈর্ঘ্য ইনপুট পূর্ণসংখ্যা।

তারপরে আমরা বিধিগুলির এই তালিকাটি ব্যবহার করে একটি "সমিতি" তে পরিণত করি <|...|>। এটি কোনও প্রদত্ত বাম-হাতের মান সহ শুধুমাত্র শেষ নিয়ম ধরে রাখার প্রভাব রাখে। অন্য কথায়, এটা বর্জন করবে Log[2]->2এবং Log[2]->4এবং Log[2]->8এবং শুধুমাত্র রাখা Log[2]->16(অভিমানী যে ইনপুট এই উদাহরণে 16 এবং 31 মধ্যে)। সুতরাং কেবলমাত্র ডান হাতের বাকী অংশগুলি সর্বাধিক প্রধান শক্তি — বাকি একটি নিয়ম ব্যতীত 0->n, যেখানে nইনপুট পূর্ণসংখ্যা পর্যন্ত বৃহত্তম অ-প্রাইম-শক্তি রয়েছে। তবে Restসেই অনাকাঙ্ক্ষিত নিয়মকে দূরে সরিয়ে দেয় এবং Valuesসমিতির বিধি থেকে ডান দিকের দিকগুলি বের করে দেয়। (এগুলি উপরের মতো সাজানো শেষ হয়েছে))

একটি সামান্য দীর্ঘ (46 বাইট) সংস্করণ, যা প্রত্যেকের উপস্থিতির সংখ্যা গণনা করে log pএবং তারপরে সর্বাধিক প্রধান শক্তিগুলিতে রূপান্তরিত করার জন্য এক্সোনসিটিয়েট করে:

E^(1##)&@@@Rest@Tally[MangoldtLambda~Array~#]&

1
অ্যাসোসিয়েশনের ঝরঝরে ব্যবহার। তারা ২০১৪ সাল থেকে বাইরে চলে গেছে তবে আমি মনে করি না যে তারা গল্ফের ক্ষেত্রে খুব বেশি ব্যবহার দেখেছে। এটি জানতে খুব দরকারী এটি অভিন্ন কীগুলি বাম থেকে ডানে মানগুলির সাথে প্রতিস্থাপন করে।
মাইল

4

সিজেম , 21 20 বাইট

মার্টিন ইন্ডারকে 1 বাইট সংরক্ষণ করা হয়েছে

ri_){mp},f{\1$mLi#}p

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

ব্যাখ্যা

ri                    e# Read an integer from input (let's call it n)
  _                   e# Duplicate it
   ){mp},             e# Push the array of all prime numbers up to and including n
         f{           e# Map the following block to each prime p:
           \          e#   Swap the top two elements of the stack
            1$        e#   Copy the second element down in the stack. Stack is now [p n p]
              mL      e#   Take the base-p logatithm of n
                i     e#   Cast to int (floor)
                 #    e#   Raise p to that power
                  }   e# (end of map block)
                   p  e# Print

4

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

⟧{ḋ=}ˢ⊇Xhᵐ≠∧X×ᵐ

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

এটি ক্ষুদ্র থেকে ক্ষুদ্রতম পর্যন্ত শক্তিগুলিকে আউটপুট করে।

এটি খুব অদক্ষ।

ব্যাখ্যা

⟧                   The Range [Input, Input - 1, ..., 1, 0]
 {  }ˢ              Select:
  ḋ=                  The elements of that range whose prime decompositions are lists of the
                      same element (e.g. [3,3,3]); output is those prime decompositions
      ⊇X            X is an ordered subset of that list of prime decompositions
       Xhᵐ≠         All first elements of the prime decompositions are different (that is,
                      X contains prime decompositions with different primes each times)
           ∧
            X×ᵐ     Output is the result of mapping multiplication to each element of X

উপায়টি কাজ করার কারণে এটি প্রতিটি প্রধানের জন্য সবচেয়ে বড় প্রধান পঁচন সন্ধান করবে : বাম থেকে ডানে এবং বৃহত্তম থেকে ক্ষুদ্রতম উপগ্রহে।


4

ব্র্যাচল্যাগ , 24 21 19 বাইট

3 + 2 বাইট সংরক্ষণ করেছেন ফ্যাটালাইজকে ধন্যবাদ!

এটি আমার প্রথমবার ব্র্যাচ্ল্যাগ ব্যবহার করে এবং আমি জানি যে কিছু কিছু ছোট উপায়ে করা যেতে পারে তবে আমি আনন্দিত যে এটি এমনকি কার্যকর হয়: ডি

{≥.~^ℕ₁ᵐhṗ:.≜×>?∧}ᶠ

এটি অনলাইন চেষ্টা করুন! (রিটার্ন মানগুলি তাদের বেস প্রাইমগুলি দ্বারা অর্ডার করা হয়)

ব্যাখ্যা:

{................}ᶠ           #Find all possible results of what's inside.
 ≥.                           #Input is >= than the output.
  .~^ℕ₁ᵐ                      #Output can be calculated as A^B, where A and B are
                              #Natural numbers >=1.
        hṗ                    #The first of those numbers (A) is prime
          :.≜×>?              #That same element (A), multiplied by the output
                              #is greater than the input - This means 
                              #that B is the maximal exponent for A.
                ∧             #No more restrictions on the output.

1
গ্রেট! আপনি নির্দিষ্ট ভেরিয়েবলের নাম ?এবং .ইনপুট এবং আউটপুট এর পরিবর্তে Iএবং এর পরিবর্তে দুটি বাইট সংরক্ষণ করতে পারেন X:{≥N~^.hṗ:N×>?∧0<~t}ᶠ^ᵐ

1
আপনি 0<~t.ℕ₁ = [1, ..., +inf){≥N~^.ℕ₁ᵐhṗ:N×>?∧}ᶠ^ᵐ
আউটপুটটির

@ ফ্যাটালাইজ আপনাকে ধন্যবাদ! আমি আপনার পরামর্শগুলির সাথে সমাধানটি আপডেট করব :) যাইহোক, আপনি কি জানেন যে কেন {≥.~^ℕ₁ᵐhṗ:.×>?∧}ᶠ(এনটি আউটপুট হিসাবে সরাসরি এন ব্যবহার করে) এর মতো সমাধান কাজ করে না? আমি প্রথমে এরকম কিছু চেষ্টা করেছি, তবে তারপরে এক্স ব্যবহার এবং এটির উপরে প্রয়োগ করতে হবে
লিও

2
আমি আসলে একই জিনিস অবাক; এটি সম্ভবত অন্তর্নিহিত লেবেলাইজেশন পদক্ষেপের কারণে ঘটে {...}ᶠযা ভবিষ্যদ্বাণীটির শেষে ঘটে যা অদ্ভুত আচরণের কারণ হয়। আমি এটি পরিবর্তন করতে চাই এবং এই প্রোগ্রামটি কেন উপরেরটির মতো একইভাবে কাজ করে না তা আমি বিশেষভাবে দেখব।
8:58

1
আপনি যদি এটি এটি করেন তবে এটি আসলে কাজ করে: {≥.~^ℕ₁ᵐhṗ:.≜×>?∧}ᶠএইভাবে আপনি সঠিক লেবেলাইজেশন পাবেন। (ইতিমধ্যে চশমাগুলিতে একটি পরিবর্তন করা হয়েছিল তবে প্রকৃতপক্ষে এই বিশেষ প্রোগ্রামের আচরণটি পরিবর্তন করে না, সুতরাং এটি এটিকে প্রতিযোগিতামূলক করে তোলে না)। এটি 2 বাইট সংরক্ষণ করে
ফ্যাটালাইজ করুন


3

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

seq $1|factor|sed "s@.*: \(\w*\)\$@\1;l($1);l(\1);print \"/^p\"@"|bc -l|dc

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

ইনপুট নম্বরটি আর্গুমেন্ট হিসাবে পাস করা হয়েছে। আউটপুট stdout এ মুদ্রিত হয়। (প্রচলিত হিসাবে, স্ট্যাডার উপেক্ষা করা হয়।)

নমুনা আউটপুট:

./maximalprimepowers 100 2>/dev/null
64
81
25
49
11
13
17
19
23
29
31
37
41
43
47
53
59
61
67
71
73
79
83
89
97

./maximalprimepowers 10000 2>/dev/null | wc -l
1229

এখানে কিভাবে এটা কাজ করে:

যুক্তিটি কল করুন এন।

seq1 থেকে N পর্যন্ত সমস্ত সংখ্যা উত্পন্ন করে এবং factorএগুলি সমস্তকে ফ্যাক্টর করে।

সেড করার কলটিতে রেজেক্স সেই লাইনগুলিকে চিহ্নিত করে যেখানে সংখ্যাটি প্রধান পি, এবং সেই রেখাগুলিকে ফর্মের রেখাগুলির সাথে প্রতিস্থাপন করে `

P;l(N);l(P);print "/^p"

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

এই লাইনগুলি ইনপুট হিসাবে খাওয়ানো হয় bc -l; বিসি তিনটি নির্দেশিত সংখ্যার মান মুদ্রণ করে, প্রত্যেকের পরে একটি নতুন লাইন থাকে এবং তারপরে অক্ষরগুলি মুদ্রণ করে/^p । (সিসিতে l (x) x এর প্রাকৃতিক লোগারিদমকে বোঝায়)) জে কে

বিসি মুদ্রিত স্ট্রিংগুলি পরে ডিসিকে ইনপুট হিসাবে খাওয়ানো হয়; ডিসি প্রতিটি পি ^ (লগ (এন) / লগ (পি)) এর পূর্ণসংখ্যার গাণিতিক (কাটাকাটি) ব্যবহার করে মুদ্রণ করে; এটিই হ'ল পি-এর সর্বশক্তিমান <= এন power

উপরে যে বিষয়টি লক্ষ্য করা গেছে তা হ'ল লাইনের সাথে কী ঘটে যা কারণগুলির দ্বারা উত্পাদিত হয় যা প্রাইমগুলির সাথে সামঞ্জস্য করে না। সেগুলিতে কলগুলিতে সেই লাইনগুলি রেজেসের সাথে মেলে না, সুতরাং তাদের প্রতিস্থাপন করা হয় না। ফলস্বরূপ, এই লাইনগুলি একটি কোলন দ্বারা অনুসরণ করা একটি নম্বর দিয়ে শুরু হয়, যা ইনপুট হিসাবে খাওয়ানো হলে ত্রুটি উত্পন্ন করে bc। কিন্তু বিসি তখন স্ট্যাডারকে কেবল প্রিন্ট করে, যা আমরা উপেক্ষা করি; এটি stdout কিছুই মুদ্রণ করে না। ডিফল্টরূপে, স্টার্ডার পিপিসিজিতে উপেক্ষা করা হয়


3

হাস্কেল , 73 67 66 বাইট

p n=[last[x^i|i<-[1..n],x^i<=n]|x<-[2..n],all((>0).mod x)[2..x-1]]

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

Prelude> p 50
[32,27,25,49,11,13,17,19,23,29,31,37,41,43,47]

সম্পাদনা করুন: জগারবকে ধন্যবাদ 6 বাইট!

ব্যাখ্যা:

p n=[... x|x<-[2..n]                         ] -- list of all x in the range 2 to n
p n=[... x|x<-[2..n],        mod x<$>[2..x-1]] -- where the remainders of x mod the numbers 2 to x-1
p n=[... x|x<-[2..n],all(>0)$mod x<$>[2..x-1]] -- are all greater 0. This yields all primes in the range.

p n=[    [x^i|i<-[1..n]       ]|...] -- for each of those x generate the list of all x^i with i in the range 1 to n
p n=[last[x^i|i<-[1..n],x^i<=n]|...] -- where x^i is smaller or equal to n
p n=[last[x^i|i<-[1..n],x^i<=n]|...] -- and take the last (that is the largest) element

1
আমি মনে করি বাম দিক হতে পারে last[x^i|i<-[1..n],x^i<=n]
জাগারব

@ জগারব ধন্যবাদ! এটি সর্বদা তালিকার উপলব্ধি, তাই না ...
লাইকোনি

2

জেলি , 9 বাইট

Ræl/ÆF*/€

আমার অন্য উত্তরের চেয়ে একটি বাইট দীর্ঘ , তবে ইনপুটটির জন্য শেষ 10,000 কয়েক সেকেন্ড।

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

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

Ræl/ÆF*/€  Main link. Argument: n

R          Range; yield [1, ..., n].
 æl/       Reduce by least common multiple.
    ÆF     Factor the LCM into [prime, exponent] pairs.
      */€  Reduce each pair by exponentiation.

জেলিতে একটি 7 বাইট সংস্করণও রয়েছে যা দ্রুত শেষ করে।
মাইল

আমি আপনার 7 দেখতে পাবো এবং আপনাকে 4 বাড়িয়ে তুলব: পি
ডেনিস

বাহ, আমি জানতাম না যে সেও একজন বিল্টিন। এটি পিষ্টক লাগে।
মাইল

2

জাভাস্ক্রিপ্ট (ES6), 118 120 119 114 112 105 বাইট

(n,r)=>(r=k=>[...Array(k-1)].map((_,i)=>i+2),r(n).filter(q=>r(q).every(d=>q%d|!(d%(q/d)*(q/d)%d)&q*d>n)))

পরামর্শ স্বাগত জানাই। এটি এক প্রকার দীর্ঘ, তবে এটি পোস্ট করা উপযুক্ত বলে মনে হয়েছে কারণ এটি প্রাইম সম্পর্কিত বিল্ট-ইনগুলি ব্যবহার না করে স্পষ্ট করে সমস্ত বিভাজ্যতা পরীক্ষা করে।

নোট:

  • একটি প্রাকৃতিক সংখ্যা q একটি মৌলিক শক্তি <=> q ​​এর সমস্ত বিভাজক একই প্রধানের শক্তি হয় <=> যে কোনও d এর জন্য q কে ভাগ করে, d এবং q / d এর একটি অপরটির বিভাজক।
  • যদি q টি পি এর শক্তি হয় তবে কিউ এর প্রতিটি ননদীংশ বিভাজনের জন্য সর্বাধিক <=> q ​​* p> n <=> q ​​* d> n।

2

সেজ, 43 বাইট

lambda i:[x^int(ln(i,x))for x in primes(i)]

পরিসরের প্রতিটি primes(i)প্রধানকে এর সর্বোচ্চ মৌলিক শক্তিতে মানচিত্র তৈরি করুন । এটির lnএকটি নাম মাত্র logতাই এটি বিকল্প ঘাঁটি গ্রহণ করে যদিও এর নাম অনুসারে এটি কেবল বেস ব্যবহার করতে পারে e


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

@ সগিক্স্প আমি এটি পেলাম না, স্ট্যাকওভারফ্লোতে এটির কী সম্পর্ক?
বুস্কুকুয়ান

2

Haskell,, 110 90 বাইট

s[]=[];s(x:t)=x:s[y|y<-t,y`rem`x>0];f n=[last.fst.span(<=n).scanl1(*)$repeat x|x<-s[2..n]]

- লাইকোনির মতামত অনুসারে আপডেট


এই ছোঁড়ার Exception: Prelude.last: empty listজন্য f 2এবং f 3
লাইকনি

1
এছাড়াও f 4ফেরৎ [2,3]পরিবর্তে [4,3], আমি আপনার মনে takeWhile(<n)চাহিদা হতে takeWhile(<=n)। তবে এর fst.spanপরিবর্তে ব্যবহার takeWhileকরা এক বাইট কম হয়।
লাইকনি

2

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

f n=[k|k<-[2..n],p:q<-[[d|d<-[2..k],mod k d<1]],k==p*p^length q,p*k>n]

একটি ফাংশন সংজ্ঞা দেয় fএটি অনলাইন চেষ্টা করুন!

ব্যাখ্যা

ধারণাটি [2..n]সেই সংখ্যার জন্য পরিসীমা ফিল্টার করে kযা সন্তুষ্ট হয় k == p^length(divisors k)এবং p*k > nকোথায় pসবচেয়ে ছোট প্রধান বিভাজক k

f n=                -- Define f n as
 [k|                -- the list of numbers k, where
  k<-[2..n],        -- k is drawn from [2..n],
  p:q<-[            -- the list p:q is drawn from
   [d|              -- those lists of numbers d where
    d<-[2..k],      -- d is drawn from [2..k] and
    mod k d<1]      -- d divides k
   ],               -- (so p:q are the divisors of k except 1, and p is the smallest one),
  k==p*p^length q,  -- k equals p to the power of the divisor list's length
                    -- (so it's in particular a prime power), and
  p*k>n]            -- p*k, the next power of p, is not in the range [2..n].

1

পিএইচপি, 101 93 91 88 বাইট

সামান্য কিছু বাস্তব গণিত ...

for($n=$argv[$i=1];$n>$j=$i++;$j?:$r[$p=$i**~~log($n,$i)]=$p)for(;$i%$j--;);print_r($r);

ভাঙ্গন

for($n=$argv[$i=1];     // loop $i from 2 to $n
    $n>$j=$i++;             // 0.: init $j to $i-1
    $j?:                    // 2. if $i is prime
        $r[$p=$i**~~log($n,$i)]=$p) // 3. add maximum power to results
    for(;$i%$j--;);         // 1. prime check (if $i is prime, $j will be 0)
print_r($r);            // print results

1

জাভাস্ক্রিপ্ট ES7, 93 বাইট

i0 থেকে শুরু করে অন্তর্ভুক্ত করে পুনরাবৃত্তভাবে পুনরাবৃত্তি করুন n। যদি iপ্রধান হয় তবে এটি সর্বোচ্চ ফ্লোরযুক্ত এক্সপোনেন্টকে বাড়ান <= n( i ^ floor(log(n) / log(i)))

F=(n,i=n)=>i?[...((P=j=>i%--j?P(j):1==j)(i)?[i**((l=Math.log)(n)/l(i)|0)]:[]),...F(n,--i)]:[]
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.