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


10

নিম্নলিখিতগুলি করে এমন একটি ফাংশন, এক্সপ্রেশন বা প্রোগ্রাম তৈরি করুন:

  1. যে কোনও সংখ্যার মূল কারণগুলি নিন এবং তাদের যোগফল দিন। উদাহরণস্বরূপ, 28 এর প্রধান কারণগুলি 2 2 7 হয়, যা 11 হয়।
  2. প্রদত্ত সংখ্যার জন্য মৌলিক উপাদানগুলির সংখ্যা দ্বারা ফলাফলকে গুণ করুন। উদাহরণস্বরূপ, 28 এর 3 টি প্রধান কারণ রয়েছে যা 11 এর সমষ্টি 11 * 3 33।
  3. যতক্ষণ না আপনি ইতিমধ্যে তালিকায় অন্তর্ভুক্ত রয়েছে এমন কোনও সংখ্যায় না পৌঁছাবেন, ততক্ষণে ফলাফলটি (যা মূল সংখ্যা দিয়ে শুরু হয়) সংরক্ষণ করে পুনরায় ক্রিয়াটি পুনরাবৃত্তি করুন। চূড়ান্ত নম্বরটি যোগ না করে থামিয়ে দিন, যাতে তালিকায় কোনও সদৃশ থাকে না। 28 এর অগ্রগতি 28 33, কারণ আবার 28-এ 33 ফলাফল।
  4. ফলাফলের তালিকার উপাদানগুলি গণনা করুন। 28 এর ক্ষেত্রে উত্তরটি 2 হয়।

এখানে ফলাফল রয়েছে 0<n<=10, যাতে আপনি নিজের অ্যালগোরিদম পরীক্ষা করতে পারেন।

2 1 1 10 1 11 1 9 5 10

(বাল্ফা যেমন উল্লেখ করেছে, higley(1)তালিকাটি ১ থেকে ২, উত্তরটি ২ 0 .। জেটিতে লেখা আমার মূল অ্যালগরিদমে একটি বাগের কারণে আমার মূলত ১ ছিল)

যেহেতু আমি একটি উত্কৃষ্ট এসওবি এবং এটি ওআইআইএস- তে পাওয়া যায় নি , তাই কোড গল্ফের এই রাউন্ডের সময়কালের জন্য যাক, একে "হিগলি সিকোয়েন্স" বলি। একটি যুক্ত বোনাস হিসাবে, প্রথম দুটি nসর্বাধিক higley(n)যেখানে nপ্রাইম নয় এবং থাকার তা সন্ধান করুন n>1। (আমি মনে করি কেবল দুটি আছে তবে আমি এটি প্রমাণ করতে পারি না))

এটি স্ট্যান্ডার্ড কোড গল্ফ, তাই যথারীতি খুব কম কাস্ট্রোক জিততে পারে তবে আমি আপনাকে অনুরোধ করি যে আপনি দয়া করে অন্য ভাষাগুলিতে চতুর উত্তরগুলিকে উজ্জীবিত করুন, এমনকি যদি সেগুলি ভারবজ হয়।


4
কেন highley(1) == 1? একটির কোনও প্রধান উপাদান নেই, সুতরাং 4-এ ফলাফলের তালিকাটি হ'ল [1, 0], highley(1) == 2যেমনটি আমি এটি দেখছি।
বালফা

আমরা কি ধরে নিতে পারি যে ইনপুট নম্বর এবং মধ্যবর্তী মানগুলি 2 ^ 31-1 (যেমন স্বাক্ষরিত 32-বিট পূর্ণসংখ্যার সাথে ফিট করে) এর চেয়ে বেশি হবে না?
পিটার টেলর

@ পিটার টেলর শিওর
গ্রেগরি হিগলি

যদি কেউ এটি সহায়ক বলে মনে করেন, OEIS ক্রমগুলি যা অস্পষ্টভাবে সম্পর্কিত এবং কিছু অনুপ্রেরণা সরবরাহ করতে পারে সেগুলি হ'ল A001414, A001222 এবং A002217।
পিটার টেলর

1
যেহেতু আপনি মন্তব্য করেননি আমি ধরে নিয়েছি আপনি লক্ষ্য করেন নি: আমি প্রমাণ করেছি যে কেবলমাত্র দুটি অ-প্রাইম ফিক্সপয়েন্ট রয়েছে এবং এটি আমার পোস্টে পরিশিষ্ট হিসাবে যুক্ত করেছে।
পিটার টেলর

উত্তর:


6

জে, 47 45

#@((~.@,[:(+/@{:*+/@:*/)2 p:{:)^:_)`2:@.(=&1)

এটি ব্যবহার না করে এটি আরও সংক্ষিপ্ত হতে পারে ^:_, তবে আমার মস্তিষ্ক ইতিমধ্যে যথেষ্ট ভাজা হয়েছে।

সম্পাদনা করুন (47-> 45) ডাবল কুপনের দিন।

ব্যবহার:

   higley =: #@((~.@,(+/@{:*+/@:*/)@(2&p:)@{:)^:_)`2:@.(=&1)
   higley 1
2
   higley"0 (1 + i. 10)
2 1 1 10 1 11 1 9 5 10

কি দারুন! এজে সলিউশন যা গল্ফস্ক্রিপ্ট সমাধানের চেয়ে কম। প্রথম আমি দেখেছি। (আমি জে। এর একটি বড় অনুরাগী)
গ্রেগরি হিগলি

3
আপনি কিছুটা আলাদা অ্যালগোরিদম ব্যবহার করে এটি যথেষ্ট সংক্ষিপ্ত করতে পারেন: #@((~.@,((+/*#)@:q:)@{:)^:_)`2:@.(=&1)যা 38 টি অক্ষর।
গ্রেগরি হিগলি

বাহ, আমি কীভাবে এটি কীভাবে করব তা বোঝার চেষ্টা করেছি: তবে এটি আমার 2 পি: সমাধানে হ্যান্ডেল করার চেষ্টা করছিলাম যাতে আমি এটি পেলাম না। প্রত্যাবর্তন স্পষ্ট।
জেসি মিলিকান

আপনি চরিত্রগুলির সেই বিস্ফোরণটি দেখতে এবং এটিকে " স্পষ্টত প্রত্নতাত্ত্বিক স্পষ্ট " বলতে পারেন তা কেবল আমার মনকে ফুঁকিয়ে দেয়। এই দিনগুলির একটির মধ্যে আমার গল্ফস্ক্রিপ্ট বা জে।
ক্যাসি

@ ক্যাসি আমি একবারে একইরকম অনুভব করেছি, তবে আপনি যত বেশি জেন ​​শিখেন এবং ব্যবহার করেন, ততই এই ধরণের "আপনার দিকে ঝাঁপিয়ে পড়ে", যদিও আমার এখনও ধাঁধা দিতে হবে এমন জিনিসগুলি আমি দেখতে পাচ্ছি। জে সম্পর্কে একটি সহায়ক জিনিসটি আপনি যদি যুক্ত করেন তবে তা। বা: একটি প্রতীক পর সৃষ্টি একটি নতুন প্রতীক, যেমন, {, {., এবং {:সব গড় ভিন্ন জিনিস, কিন্তু {-(উদাহরণস্বরূপ) স্পষ্টভাবে দুটি জিনিস একটা ক্রম হয়, {এবং -
গ্রেগরি হিগলি

5

গল্ফস্ক্রিপ্ট, 68 67 62 61 অক্ষর

[.]({[.2@{1$1$%{)}{\1$/1$}if}*;;].,*0+{+}*.2$?@@.@+\@)!}do;,(

এটি একটি অভিব্যক্তি: এটি nস্ট্যাকটি নেয় এবং ফলাফলটি স্ট্যাকের উপরে ফেলে। এটি একটি প্রোগ্রাম লাগে পরিণত nstdin থেকে এবং stdout- এ ফলাফলের ছাপে শীর্ষস্থানীয় প্রতিস্থাপন [সঙ্গে~

এর হৃদয় হ'ল [.2@{1$1$%{)}{\1$/1$}if}*;;](২৮ টি অক্ষর) যা স্ট্যাকের শীর্ষ নম্বরটি নিয়ে যায় এবং (অবিশ্বাস্যভাবে অদক্ষ অ্যালগরিদম দ্বারা) এর প্রধান কারণগুলির একটি তালিকা উত্পন্ন করে। সি-স্টাইল সিউডোকোড সমতুল্য:

ps = [], p = 2;
for (int i = 0; i < n; i++) {
    if (n % p == 0) {
        ps += p;
        n /= p;
    }
    else p++;
}

0+ঠিক আগে {+}*বিশেষ ক্ষেত্রে পরিচালনা করতে হয় n==1কারণ Golfscript খালি তালিকা উপর একটি বাইনারি অপারেশন ভাঁজ পছন্দ করেন না।

অ-প্রাইম ফিক্সপয়েন্টগুলির মধ্যে একটি হল 27; আমি ম্যাপিং (P বিবেচনা করে প্রোগ্রাম ব্যবহার ছাড়াই এই পাওয়া একটি -> একটি 2 P), যা একটি fixpoint হলে একটি == পি (ক -1) / 2 এবং ক্ষুদ্র চেষ্টা a। ( a==1প্রাইমগুলির স্থিরতা দেয়)।

প্রোগ্রামটির সাথে অনুসন্ধান করা দ্বিতীয় ফিক্সপয়েন্টে পরিণত হয়: 30 = (2 + 3 + 5) * 3


পরিশিষ্ট: প্রমাণ যে মাত্র দুটি অ-প্রাইম ফিক্সপয়েন্ট রয়েছে

স্বরলিপি: পুনরাবৃত্তি (A001414) সহ sopfr(x)প্রধান উপাদানগুলির যোগফল x। (A001222) Omega(x)এর প্রধান কারণগুলির সংখ্যা x। হিগলে উত্তরসূরি ফাংশন হয়h(x) = sopfr(x) Omega(x)

ধরুন আমাদের কাছে একটি ফিক্সপয়েন্ট রয়েছে N = h(N)যা n=Omega(N)প্রাইমের একটি পণ্য ।

N = p_0 ... p_{n-1} = h(N) = n (p_0 + ... + p_{n-1})

বেসিক সংখ্যার তত্ত্ব: এর মধ্যে nবিভক্ত হয় p_0 ... p_{n-1}, তাই w=Omega(n)সেই সমস্ত মৌলিক বিষয়গুলির প্রধান কারণ n। Wlog আমরা তাদের শেষ হতে হবে w। সুতরাং আমরা উভয় পক্ষকে পাশাপাশি ভাগ করে নিতে nপারি

p_0 ... p_{n-w-1} = p_0 + ... + p_{n-1}

অথবা

p_0 ... p_{n-w-1} = p_0 + ... + p_{n-w-1} + sopfr(n)

প্রদত্ত যে মৌলিক সংখ্যার সব p_0থেকে p_{n-w-1}1 তার চেয়ে অনেক বেশী হয়, বৃদ্ধি তাদের কোন LHS RHS চেয়ে বেশি বৃদ্ধি পায়। একটি প্রদত্ত জন্য n, আমরা সমস্ত প্রার্থী সমাধান গণনা করতে পারেন।

বিশেষত, এলএইচএস সমস্ত "ফ্রি" প্রাইম সেট করে আরএইচএসের চেয়ে 2 বেশি হলে কোনও সমাধান হতে পারে না, অর্থাত্ কোনও সমাধান নেই যদি

2^{n-w} > 2 (n-w) + sopfr(n)

যেহেতু sopfr(n) <= n(কেবলমাত্র এন = 4 বা এন প্রাইমের জন্য সমতা সহ), আমরা দুর্বল বক্তব্য দিতে পারি যে কোনও ফিক্সপয়েন্ট নেই

2^{n-w} > 3 n - 2 w

wস্থির হোল্ডিং আমরা nসন্তোষজনক বিভিন্ন মান নির্বাচন করতে পারেন w=Omega(n)। সবচেয়ে ছোট nএটি হয় 2^w। নোট করুন যে যদি 2^{n-w}কমপক্ষে 3 হয় (যেমন, যদি n-w>1এটি সত্য হয় n>2) তবে ধ্রুবক nধরে রাখার সময় wবাড়লে আরএইচএসের চেয়ে LHS আরও বাড়বে। এটিও নোট করুন যে w>2সবচেয়ে ছোট সম্ভাব্যতার পক্ষে এবং গ্রহণ করা nঅসমতাকে সন্তুষ্ট করে এবং এর কোনও স্থিরতা নেই।

এটি আমাদের তিনটি ক্ষেত্রে ফেলেছে: w = 0এবং n = 1; w = 1এবং nপ্রধান; বা w = 2এবং nআধা-প্রধান হয়।

কেস w = 0n = 1, যে Nকোনও প্রধান।

কেস w = 1। তাহলে n = 2তারপর N = 2pএবং আমরা প্রয়োজন p = p + 2, যা কোন সমাধান হয়েছে। যদি n = 3তারপর আমরা আছে pq = p + q + 3এবং দুই সমাধান, (p=2, q=5)এবং (p=3, q=3)। যদি n = 5তা হয় 2^4 > 3 * 5 - 2 * 1তবে এর সাথে আর কোনও সমাধান নেই w = 1

কেস w = 2। যদি n = 4তবে N = 4pqএবং আমাদের প্রয়োজন pq = p + q + 4। এটিতে পূর্ণসংখ্যার সমাধান রয়েছে p=2, q=6তবে প্রাথমিক সমাধান নেই। যদি n = 6তা হয় 2^4 > 3 * 6 - 2 * 2তবে এর সাথে আর কোনও সমাধান নেই w = 2

সমস্ত কেস ক্লান্ত হয়ে গেছে, সুতরাং একমাত্র অ-মৌলিক ফিক্সপয়েন্টগুলি 27 এবং 30।


1
পেনসিল এবং কাগজ ব্যবহার করে এই দুটি একই ফিক্সপয়েন্ট পাওয়া গেছে: ২ and এবং ৩০ I
মেল্লামব্যাক

1
পরবর্তী আকর্ষণীয় প্রশ্ন হতে পারে। অসীম অনেকগুলি হিগলি (এক্স) = 2 আছে? হিগলি (এক্স) = 100 এর মতো নির্বিচারে হিগলি (এক্স) উত্পন্ন করার উপায় কীভাবে?
মেল্লামোকব

খুব সুন্দর! আমি একজন জে ছেলে, তবে কেবল গল্ফস্ক্রিপ্ট শিখতে হবে।
গ্রেগরি হিগলি

@ মেল্লামোকব আমি মনে করি এই ক্রমটি নিয়ে বেশ কয়েকটি আকর্ষণীয় প্রশ্ন রয়েছে। উদাহরণস্বরূপ, আমরা যদি nগণনার আগে প্রতিটি জন্য উত্পন্ন সংখ্যার ক্রমটি বিবেচনা করি তবে n49 এর পরে এমন কোন অ-প্রধানমন্ত্রী রয়েছে যার জন্য বলেছে যে অনুক্রমটি 28 এ শেষ হয় না?
গ্রেগরি হিগলি

2
আরও একটি আকর্ষণীয় প্রশ্ন জিজ্ঞাসা করতে হবে nযে higley(n)উপরে কোন সীমাবদ্ধ একটি সাধারণ ফাংশন আছে কিনা । (এটি লুপটি যথেষ্ট পরিমাণে সরল করার অনুমতি দেবে - কেবল বারবার পুনরাবৃত্তি করবে f(n)এবং তারপরে নকলগুলি বাতিল করবে)।
পিটার টেলর

4

রুবি, 92 টি অক্ষর

f=->i{r=[i];(x=s=0;(2..i).map{|j|(s+=j;x+=1;i/=j)while i%j<1};r<<i=s*x)until r.uniq!;r.size}

এই সমাধানটি ধরে নেয় হিগলি (1) আসলে 2 টি, 1 টি নয় (উপরে বাল্ফার মন্তব্য দেখুন):

(1..10).map &f
=> [2, 1, 1, 10, 1, 11, 1, 9, 5, 10]

2

অক্টাভা - 109 অক্ষর

l=[input('')];while size_equal(unique(l),l);n=factor(l(1));l=[sum(n)*length(n) l];endwhile;disp(length(l)-1);

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