পৃথক মৌলিক কারণগুলির n সংখ্যাযুক্ত n তম সংখ্যা


10

সংক্ষিপ্ততম ফাংশন, প্রোগ্রাম, বা এক্সপ্রেশন তৈরি করুন যা A073329 গণনা করে , অর্থাত্, n স্বতন্ত্র প্রধান উপাদানগুলির সাথে a(n)থাকা নবম সংখ্যা । ইনপুট হ'ল ধারাবাহিকতায় ফিরে আসার সংখ্যা। । আমি পূর্ণ নির্ভুলতার সাথে উদ্বিগ্ন। আমি শুধু আলগোরিদম চাই। যে ভাষাগুলি যথেচ্ছভাবে বড় পূর্ণসংখ্যার সমর্থন করে না, আমরা তাদের ভান করব।0 < n

উপরে বর্ণিত ওইআইএসের লিঙ্কটি অনুসরণ করে আপনি পরীক্ষার কেসগুলি সন্ধান করতে পারেন।

হালনাগাদ:

আমাকে এটিকে পরিষ্কার করে তুলতে হবে যে আপনাকে আপনার প্রোগ্রাম, ফাংশন বা এক্সপ্রেশন থেকে কোনও পূর্ণসংখ্যার ক্রম ফিরে আসতে হবে । অন্য কথায়, 1 থেকে সকলের জন্য f(x)গণনা করা উচিত । 8 টি দেওয়া , আপনার ফাংশনটি অ্যারে বা অন্য কোনও উপযুক্ত ডেটা স্ট্রাকচার হিসাবে ফিরে আসবে ।a(n)nxx2, 10, 60, 420, 4290, 53130, 903210, 17687670


সীমা / সীমা ??
st0le

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

1
হতে পারে এটি আরও বেশি উন্মুক্ত, যখন আমরা বলি: output a(1), ... a(n)কোনও অ্যারের মতো কিছু ফেরত দেওয়ার পরিবর্তে ...
ব্যবহারকারী অজানা

উত্তর:


2

পাইথন, 144 অক্ষর

R=range
P=[x for x in R(2,99)if all(x%i for i in R(2,x))]
for a in R(input()):
 x=n=0
 while n<=a:n+=sum(x%p==0for p in P)==a+1;x+=1
 print x-1

এক্স = 8 এর সমাপ্তিতে প্রায় 2 মিনিট সময় লাগে।


2

জাভা, এক লাইনে 170 টি অক্ষর

int a(int n) {
    int a = 2, t = a, m = 1, i = 1;
    Set s = new HashSet();
    while (i++ > 0) {
        if (t % i == 0) {
            s.add(i);
            t /= i;
            if (t == 1) {
                if (s.size() == n) {
                    if (n == m) {
                        break;
                    }
                    m++;
                }
                t = ++a;
                s.clear();
            }
            i = 1;
        }
    }
    return a;
}

আপডেট, +77 অক্ষর আইওএল

int[] f(int n) {
    int[] f = new int[n];
    for (int i = 0; i < n; i++) {
        f[i] = a(i+1);
    }
    return f;
}

এটি আসলে ভুল, তবে কাছে, যদিও আমি মনে করি আমার সম্ভবত আমার প্রশ্নটি আরও পরিষ্কার করা উচিত। আপনি একটি পূর্ণসংখ্যার ক্রম ফিরে আসা উচিত। উদাহরণস্বরূপ, যদি ইনপুট 8 হয় তবে আপনার A073329 ক্রমের প্রথম 8 টি উপাদান ফেরত দেওয়া উচিত।
গ্রেগরি হিগলি

@ গ্রেগরি আপডেটের দিকে নজর দিন
কিউবাচান

আমি দুঃখিত - আমি আমার নিজের কাজের ভুল বোঝাবুঝির ভিত্তিতে আপনাকে ভোট দিয়েছি, যা OEIS- লিঙ্কটি পড়ার পরে স্পষ্ট হয়েছে। আপনি যদি আপনার পোস্টের একটি ছোটখাটো সম্পাদনা করেন তবে আমি আমার ডাউনটাতে বাতিল করতে এবং করতে পারি।
ব্যবহারকারী অজানা


আমি প্রশ্নটি ভুল বুঝেছি এবং ভেবেছিলাম, সমস্ত কারণ অবশ্যই পৃথক প্রাইম হতে হবে, তাই 2 * 3 * 5 * 2 একটি ভুল উত্তর হতে পারে। সুতরাং আমি আপনার উত্তরটি মিথ্যা মৌমাছির জন্য ভোট দিয়েছি। তারপরে আমি আবিষ্কার করেছি, 'স্বতন্ত্র প্রাইমস' কীভাবে বোঝা যায় এবং আমার ভোটদান সংশোধন করতে চেয়েছিল, তবে আমাকে আমার ভোট পরিবর্তন করতে দেওয়া হচ্ছে না - এটি প্রথম, কয়েক মিনিটের মধ্যেই সম্ভব। তবে আপনি যদি নিজের উত্তরটি সম্পাদনা করেন তবে আমি আমার ভোট পরিবর্তন করতে পারি। তাই আমি আপনাকে কিছুটা সম্পাদনা করতে বলছি।
ব্যবহারকারী অজানা

2

জাভা (অবরুদ্ধ)

public class M {

    public static void main(String[] a) {
        final int N = 100000000;
        int[] p = new int[N];
        for(int f = 2; f * f < N; f++) {
            if(p[f] == 0)
                for(int k = f; k < N; k += f)
                    p[k]++;
        }
        for(int i = 1; i <= 8; i++) {
            int c = 0, j;
            for(j = 1; j < N && c < i; j++)
                if(p[j] == i)
                    c++;
            if(c == i)
                System.out.println(i + " = " + --j);
        }
    }
}

একটি চালনী অ্যালগরিদম ব্যবহার করে। এটা বেশ দ্রুত। (Second সেকেন্ড) অবধি সঠিকভাবে কাজ 8করবে, সম্ভবত উচ্চতর কিছুতে ব্যর্থ হবে।


1

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

function(n){function f(x){for(r=[],o=x,z=2;z<=o;x%z?++z:(x/=z,r.indexOf(z)+1?0:r.push(z)));return r}for(c=0,i=1;c<n;)f(++i).length==n?c++:0;return i}

এন> = for এর জন্য প্রতিক্রিয়াহীন মনে হচ্ছে সুতরাং এটির জন্য আমি কতক্ষণ সময় নিই তা পরীক্ষা করে দেখিনি (আমার ব্রাউজারটি প্রতি 10 সেকেন্ড বা তারপরে একটি হ্যাং স্ক্রিপ্ট বিজ্ঞপ্তিটি পপ আপ করে তোলে তাই আমি সঠিকভাবে সময় দিতে পারি না এবং আমি যদি পুরোপুরি ঝুলতে চাই না তবে আমি "এটি আবার দেখাবেন না" ...) পরীক্ষা করুন

সম্পাদনা করুন: অ্যারে ফিরিয়ে আনতে 200 টি অক্ষর (+51) :

function(n){function F(){function f(x){for(r=[],o=x,z=2;z<=o;x%z?++z:(x/=z,r.indexOf(z)+1?0:r.push(z)));return r}for(c=0,i=1;c<n;)F(++i).length==n?c++:0;return i}for(a=[];n>0;n--)a.push(f());return a}

0

জে, 32 বাইট

({"0 1~i.@#)(]/.~#@~.@q:)

তবে যেহেতু আমি আমার নিজের প্রশ্নের উত্তর এত দেরিতে দিচ্ছি, আমরা এই উত্তরটি একটি কৌতূহল হিসাবে ছেড়ে দেব।

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