ইতিবাচক বিভাজনগুলি সন্ধান করুন!


11

সংজ্ঞা

শূন্যের চেয়ে বেশি হলে একটি সংখ্যা ধনাত্মক।

একটি সংখ্যা ( A) হ'ল অন্য সংখ্যার বিভাজক ( B) যদি বাকী Aভাগ না নিয়ে বিভাজন করতে পারে B

উদাহরণস্বরূপ, 2এর একটি বিভাজন 6কারণ কোনও বাকী ছাড়াই 2ভাগ করতে পারে 6

লক্ষ্য

আপনার কাজটি হ'ল একটি প্রোগ্রাম / ফাংশন লিখুন যা একটি ধনাত্মক সংখ্যা নেয় এবং তারপরে তার সমস্ত বিভাজনকারী সন্ধান করে।

সীমাবদ্ধতা

  • আপনি প্রাইম বা ফ্যাক্টেরাইজেশন সম্পর্কিত কোনও অন্তর্নির্মিত ব্যবহার করতে পারবেন না ।
  • আপনার অ্যালগরিদমের জটিলতা অবশ্যই ও (স্কয়ার্ট (এন)) এর বেশি হবে না

স্বাধীনতা

  • আউটপুট তালিকায় নকল থাকতে পারে।
  • আউটপুট তালিকাটি বাছাই করার দরকার নেই।

স্কোরিং

এটি । বাইটস মধ্যে সংক্ষিপ্ত সমাধান।

Testcases

input    output
1        1
2        1,2
6        1,2,3,6
9        1,3,9

আপনি সম্ভবত বিভাজকের অর্থ , গুণক নয় । আমি অনুমান আপনি একটি করতে চান সময় জটিলতা এর O(sqrt(n))
flawr

বিভাজক এবং গুণক মধ্যে পার্থক্য কি ?
ফাঁস নুন

আমরা উদাহরণস্বরূপ একটি সংখ্যার কারণগুলির বিষয়ে কথা বলি, যদি এইগুলির ফলাফলটি আবার মূল সংখ্যায় আসে তবে বিভাজকরা সাধারণত এমন সংখ্যা হয় যা বাকী ছাড়াই বলে থাকে এমন সংখ্যাটিকে বিভক্ত করে
flawr

@ ফ্লোয়ার সেই অনুযায়ী আপডেট হয়েছে।
ফাঁস নুন

2
আরও উদাহরণ থাকতে হবে। 99 (1 3 9 11 33 99)
ব্র্যাড গিলবার্ট বি

উত্তর:


4

পোস্টগ্র্যাসকিউএল, 176 বাইট

WITH c AS(SELECT * FROM(SELECT 6v)t,generate_series(1,sqrt(v)::int)s(r)WHERE v%r=0)
SELECT string_agg(r::text,',' ORDER BY r)
FROM(SELECT r FROM c UNION SELECT v/r FROM c)s

SqlFiddleDemo

ইনপুট: (SELECT ...v)

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

  • (SELECT ...v) - ইনপুট
  • generate_series(1, sqrt(v)::int) - 1 থেকে স্কয়ার্ট (এন) পর্যন্ত সংখ্যা
  • WHERE v%r=0 ফিল্টার বিভাজক
  • দু'বার উল্লেখ করার জন্য সাধারণ টেবিলের অভিব্যক্তি দিয়ে মোড়ানো
  • SELECT r FROM c UNION SELECT v/r FROM c বিভাজক এবং একত্রিত বিশ্রাম উত্পন্ন
  • SELECT string_agg(r::text,',' ORDER BY r) চূড়ান্ত কমা পৃথক ফলাফল উত্পাদন

টেবিল হিসাবে ইনপুট:

WITH c AS(SELECT * FROM i,generate_series(1,sqrt(v)::int)s(r)WHERE v%r=0)
SELECT v,string_agg(r::text,',' ORDER BY r)
FROM(SELECT v,r FROM c UNION SELECT v,v/r FROM c)s
GROUP BY v

SqlFiddleDemo

আউটপুট:

╔═════╦════════════════╗
║ v   ║   string_agg   ║
╠═════╬════════════════╣
║  1  ║ 1              ║
║  2  ║ 1,2            ║
║  6  ║ 1,2,3,6        ║
║  9  ║ 1,3,9          ║
║ 99  ║ 1,3,9,11,33,99 ║
╚═════╩════════════════╝

3

সি # 6, 75 বাইট

string f(int r,int i=1)=>i*i>r?"":r%i==0?$"{i},{n(r,i+1)}{r/i},":n(r,i+1);

ডাউনরেপ_নেশনের সি # সমাধানের ভিত্তিতে, তবে সি # 6 থেকে নতুন কিছু বৈশিষ্ট্য ব্যবহার করে পুনরাবৃত্ত এবং গল্ফ করেছে।

বেসিক অ্যালগরিদম ডাউনরেপ_নেশন দ্বারা উপস্থাপিত সমান। ফর-লুপটি পুনরাবৃত্তিতে পরিণত হয়, এভাবে দ্বিতীয় প্যারামিটার। পুনরাবৃত্তি শুরুটি ডিফল্ট প্যারামিটার দ্বারা সম্পন্ন হয়, সুতরাং এককভাবে প্রয়োজনীয় একক প্রারম্ভিক নম্বর দিয়ে ফাংশনটি ডাকা হয়।

  • কোনও ব্লক ছাড়াই এক্সপ্রেশন ভিত্তিক ফাংশন ব্যবহার করা রিটার্নের বিবৃতি এড়িয়ে চলে
  • টেরিনারি অপারেটরের মধ্যে স্ট্রিং বিভাজন স্ট্রিং সংমিশ্রণ এবং শর্তগুলিতে যোগদানের অনুমতি দেয়

এখানে বেশিরভাগ উত্তর হিসাবে (এখনও) উদাহরণগুলি থেকে সঠিক আউটপুট ফর্ম্যাটটি অনুসরণ করে না, আমি এটি এটি যেমন রাখি তেমনি একটি অপূর্ণতা হিসাবে ফাংশনটিতে ফলাফলটিতে একটি একক ট্রেলিং কমা অন্তর্ভুক্ত করা হয়।


প্রথম প্রথম পোস্ট!
Rɪᴋᴇʀ

3

আর , 36 31 বাইট

n=scan();c(d<-1:n^.5,n/d)^!n%%d

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

-5 বাইট ধন্যবাদ রবিন রাইডারকে


32 বাইট সঙ্গে n^.5পরিবর্তে sqrt(n)
রবিন রাইডার

আপনি বহুবার নকল করে 31 বাইটে যেতে পারেন 1
রবিন রাইডার

@ রবিনরাইডার চালাক! ধন্যবাদ।
জিউসেপ

2

মতলব, 48 বাইট

n=input('');a=1:n^.5;b=mod(n,a)<1;[a(b),n./a(b)]

কিভাবে কাজ করে?
ফাঁস নুন

এছাড়াও, আপনি একটি অ্যালগরিদম তৈরি করেছিলেন যা আমি ভাবতে পারি না ... আমি কত বোকা।
ফাঁস নুন

আমি সমস্ত বিভাজনগুলি খুঁজে পাই sqrt(n)এবং তারপরে প্রতিটি বিভাজক dএবং n/dআমার তালিকায় রাখি।
flawr

কিছু বিধি যুক্ত করা হয়েছে। হয়ত আপনাকে কিছু বাইট বাঁচাতে পারে।
ফাঁস নুন

1
আমি পরীক্ষা করিনি, তবে আপনি কি b=~mod(n,a)1 বাইট সংরক্ষণ করতে পারবেন না ?
লুইস মেন্ডো

2

জে, 26 বাইট

(],%)1+[:I.0=]|~1+i.@<.@%:

ব্যাখ্যা

(],%)1+[:I.0=]|~1+i.@<.@%:  Input: n
                        %:  Sqrt(n)
                     <.@    Floor(Sqrt(n))
                  i.@       Get the range from 0 to Floor(Sqrt(n)), exclusive
                1+          Add 1 to each
             ]              Get n
              |~            Get the modulo of each in the range by n
           0=               Which values are equal to 0 (divisible by n), 1 if true else 0
       [:I.                 Get the indices of ones
     1+                     Add one to each to get the divisors of n less than sqrt(n)
   %                        Divide n by each divisor
 ]                          Get the divisors
  ,                         Concatenate them and return

2

জাভাস্ক্রিপ্ট (ES6) - 48 বাইট

f=n=>[...Array(n+1).keys()].filter(x=>x&&!(n%x))

খুব দক্ষ না কিন্তু কাজ করে! নীচে উদাহরণ:

let f=n=>[...Array(n+1).keys()].filter(x=>x&&!(n%x));
document.querySelector("input").addEventListener("change", function() {
  document.querySelector("output").value = f(Number(this.value)).join(", ");
});
Divisors of <input type="number" min=0 step=1> are: <output></output>


পিপিসিজিতে আপনাকে স্বাগতম!
লাইকনি

হে(এন)

1

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

tX^:\~ftGw/h

@ Flawr এর উত্তরে এর পদ্ধতির সাথে মিল রয়েছে ।

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

ব্যাখ্যা

t      % take input N. Duplicate.
X^:    % Generate range from 1 to sqrt(N)
\      % modulo (remainder of division)
~f     % indices of zero values: array of divisors up to sqrt(N)
tGw/   % element-wise divide input by those divisors, to produce rest of divisors
h      % concatenate both arrays horizontally

আমি প্রায়শই বিস্মিত হই যে এমএটিএল-এ লিখিত প্রোগ্রামগুলির সংযুক্ত কোডগুলি একটি ভাল আরএনজি তৈরি করবে কিনা।
flawr

@ ফ্লোয়ার এটি সম্ভবত প্রতিটি কোড গল্ফ ভাষার জন্য প্রযোজ্য :-)
লুইস মেন্ডো

1

05 এ বি 1 ই , 14 12 বাইট

কোড:

ÐtLDŠÖÏDŠ/ï«

ব্যাখ্যা:

Ð             # Triplicate input.
 tL           # Push the list [1, ..., sqrt(input)].
   D          # Duplicate that list.
    Š         # Pop a,b,c and push c,a,b.
     Ö        # Check for each if a % b == 0.
      Ï       # Only keep the truthy elements.
       D      # Duplicate the list.
        Š     # Pop a,b,c and push c,a,b
         /ï   # Integer divide
           «  # Concatenate to the initial array and implicitly print.

ব্যবহার সিপি-1252 এনকোডিং। এটি অনলাইন চেষ্টা করুন!


একটি ব্যাখ্যা প্রদান যত্ন?
ফাঁস নুন

@ কেনেনি লাউ যুক্ত করেছেন
আদনান

1

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

lambda n:sum([[x,n/x]for x in range(1,int(n**.5+1))if n%x<1],[])

এই বেনামে ফাংশন বিভাজকের একটি তালিকা আউটপুট করে। বিভাজকগুলিকে পরিসীমাতে বিচারের বিভাগ দ্বারা গুণ করা হয় [1, ceil(sqrt(n))], যা হয় O(sqrt(n))। যদি n % x == 0(সমতুল্য n%x<1) হয় তবে উভয়ই xএবং n/xএর বিভাজনকারীn

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


1

জেলি , 9 বাইট

½Rḍ³Tµ³:;

অন্যান্য উত্তর হিসাবে, এটি ও ()n) যদি আমরা (মিথ্যা) অনুমান করি যে পূর্ণসংখ্যা বিভাগ হ'ল (1)

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

½Rḍ³Tµ³:;  Main link. Argument: n

½          Compute the square root of n.
 R         Construct the range from 1 to the square root.
  ḍ³       Test each integer of that range for divisibility by n.
    T      Get the indices of truthy elements.
     µ     Begin a new, monadic chain. Argument: A (list of divisors)
      ³:   Divide n by each divisor.
        ;  Concatenate the quotients with A.

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




0

গণিত, 50 বাইট

@ Flawr এর সমাধানের মতো

X এর 1 থেকে n এর বর্গমূল পর্যন্ত ট্রেল বিভাগ সম্পাদন করে এবং বিভাজ্য হলে এটি x এবং n / x হিসাবে তালিকায় সংরক্ষণ করে ।

(#2/#)~Join~#&@@{Cases[Range@Sqrt@#,x_/;x∣#],#}&
  • নোট করুন যে ইউটিএফ -8 এ উপস্থাপনের জন্য 3 বাইট প্রয়োজন, 48 টি অক্ষরের স্ট্রিংয়ের জন্য ইউটিএফ -8 উপস্থাপনায় 50 বাইট প্রয়োজন।

ব্যবহার

  f = (#2/#)~Join~#&@@{Cases[Range@Sqrt@#,x_/;x∣#],#}&
  f[1]
{1, 1}
  f[2]
{2, 1}
  f[6]
{6, 3, 1, 2}
  f[9]
{9, 3, 1, 3}

ঠিক আছে, এর জন্য 3 বাইট দরকার ...
লিকি নুন

@ কেনি লাউ হ্যাঁ, আমি ভুল ছিলাম, ডাবল-চেক করা উচিত ছিল
মাইল

0

জাভাস্ক্রিপ্ট (ES6), 66 62 বাইট

f=(n,d=1)=>d*d>n?[]:d*d-n?n%d?f(n,d+1):[d,...f(n,d+1),n/d]:[d]

আমি ভেবেছিলাম আমি এমন একটি সংস্করণ লিখব যা একটি সাজানো ডুপ্লিকেটযুক্ত তালিকার ফিরিয়ে দিয়েছে এবং এটি আসলে 4 বাইট সংক্ষিপ্ত আকারে পরিণত হয়েছে ...


0

সি #, 87 বাইট


Golfed

String m(int v){var o="1";int i=1;while(++i<=v/2)if(v%i==0)o+=","+i;o+=","+v;return o;}

Ungolfed

String m( Int32 v ) {
    String o = "1";
    Int32 i = 1;

    while (++i <= v / 2)
        if (v % i == 0)
            o += "," + i;

    o += "," + v;

    return o;
}

সম্পূর্ণ কোড

using System;
using System.Collections.Generic;

namespace N {
    class P {
        static void Main( string[] args ) {
            List<Int32> li = new List<Int32>() {
                1, 2, 6, 9,
            };

            foreach (Int32 i in li) {
                Console.WriteLine( i + " »> " + m( i ) );
            }

            Console.ReadLine();
        }

        static String m( Int32 v ) {
            String o = "1";
            Int32 i = 1;

            while (++i <= v / 2)
                if (v % i == 0)
                    o += "," + i;

            o += "," + v;

            return o;
        }
    }
}

রিলিজ

  • v1.0 - 87 bytes- প্রাথমিক সমাধান।

মন্তব্য

  • ইন Golfed কোড , আমি ব্যবহার var's এবং int' এর পরিবর্তে s String's এবং Int32এর, কোড খাটো করতে যখন Ungolfed কোড এবং ফুল কোড আমি ব্যবহারের String' s এবং Int32এর কোড আরো পাঠযোগ্য না।

আমি শুনেছি যে forসাধারণত তুলনায় ভাল while
ফাঁস নুন

আপনার সমাধানে ও (স্কয়ার্ট (এন)) এর পরিবর্তে ও (এন) এর জটিলতা রয়েছে ...
লিকি নুন

@ কেনি লাউ এটি পরিস্থিতির উপর নির্ভর করে, এক্ষেত্রে একটি forলুপ থাকার একই লম্বার দৈর্ঘ্য হবে while। এক্ষেত্রে এটি থাকা বা অন্যটি থাকা অপ্রাসঙ্গিক।
auhmaan


0

লুয়া, 83 বাইট

s=''x=io.read()for i=1,x do if x%i==0 then s=s..i..', 'end end print(s:sub(1,#s-2))

দুর্ভাগ্যক্রমে আমি এর চেয়ে ভাল করতে পারিনি


1. পিপিসিজিতে স্বাগতম, আশা করি আপনি এই সাইটটি উপভোগ করবেন! ২. আপনি কিছু বাইট সংরক্ষণ করতে == 0 থেকে <1 পরিবর্তন করতে পারেন। ৩. আপনি যদি শেষ হয় তার পরিবর্তে তিনটি কাঠামো ব্যবহার করতে পারেন তবে এটি কোনও বাইট সংরক্ষণ করতে পারে কিনা তা আমি জানি না। ৪. আপনার অ্যালগরিদমের জটিলতা হ'ল হে (এন) যা প্রয়োজনীয়তা পূরণ করে না।
ফাঁস নুন

ঠিক আছে. তালিকার অর্ডার দেওয়া বা উপযুক্তভাবে ফর্ম্যাট করা দরকার?
ব্যবহারকারী 6245072

"আউটপুট তালিকায় নকল থাকতে পারে The আউটপুট তালিকাটি বাছাই করার দরকার নেই" "
লিকি নুন

ডান lol। এবং আমি কি ফলাফল বা এটিযুক্ত একটি অ্যারে যথেষ্ট মুদ্রণ করা দরকার?
ব্যবহারকারী 6245072

ভাল, হয় আপনি এটি মুদ্রণ করুন বা আপনি এটি ফিরিয়ে দিন (কোনও ফাংশনের অভ্যন্তরে)।
লিকি নুন

0

পার্ল 6 , 40 বাইট

{|(my@a=grep $_%%*,^.sqrt+1),|($_ X/@a)}

ব্যাখ্যা:

{
  # this block has an implicit parameter named $_

  # slip this list into outer list:
  |(

    my @a = grep
                 # Whatever lambda:
                 # checks if the block's parameter ($_)
                 # is divisible by (%%) this lambda's parameter (*)

                 $_ %% *,

                 # upto and exclude the sqrt of the argument
                 # then shift the Range up by one
                 ^.sqrt+1
                 # (0 ..^ $_.sqrt) + 1

                 # would be clearer if written as:
                 # 1 .. $_.sqrt+1
  ),
  # slip this list into outer list
  |(

    # take the argument and divide it by each value in @a
    $_ X/ @a

    # should use X[div] instead of X[/] so that it would return
    # Ints instead of Rats
  )
}

ব্যবহার:

my &divisors = {|(my@a=grep $_%%*,^.sqrt+1),|($_ X/@a)}

.say for (1,2,6,9,10,50,99)».&divisors
(1 1)
(1 2 2 1)
(1 2 3 6 3 2)
(1 3 9 3)
(1 2 10 5)
(1 2 5 50 25 10)
(1 3 9 99 33 11)

0

সি #, 87 বাইট

void f(int r){for(int i=1;i<=Math.Sqrt(r);i++){if(r%i==0)Console.WriteLine(i+" "+r/i);}

এটি সমস্ত সংখ্যার জন্য কাজ করে কিনা আমি জানি না, আমি সন্দেহ করি এটি এটি করেছে।

তবে জটিলতা ঠিক আছে, তাই ইতিমধ্যে এটি কিছু না করে



0

আইএ -32 মেশিন কোড, 27 বাইট

Hexdump:

60 33 db 8b f9 33 c0 92 43 50 f7 f3 85 d2 75 04
ab 93 ab 93 3b c3 5a 77 ec 61 c3

উত্স কোড (এমএস ভিজ্যুয়াল স্টুডিও সিনট্যাক্স):

    pushad;
    xor ebx, ebx;
    mov edi, ecx;
myloop:
    xor eax, eax;
    xchg eax, edx;
    inc ebx;
    push eax;
    div ebx;
    test edx, edx;
    jnz skip_output;
    stosd;
    xchg eax, ebx;
    stosd;
    xchg eax, ebx;
skip_output:
    cmp eax, ebx;
    pop edx;
    ja myloop;
    popad;
    ret;

প্রথম প্যারামিটার ( ecx) আউটপুটটির জন্য একটি পয়েন্টার, দ্বিতীয় প্যারামিটার ( edx) হয়। এটি কোনওভাবেই আউটপুটের শেষ চিহ্নিত করে না; তালিকার শেষের সন্ধানের জন্য জিরোসের সাথে আউটপুট অ্যারেটি প্রিফিল করা উচিত।

একটি সম্পূর্ণ সি ++ প্রোগ্রাম যা এই কোডটি ব্যবহার করে:

#include <cstdint>
#include <vector>
#include <iostream>
#include <sstream>
__declspec(naked) void _fastcall doit(uint32_t* d, uint32_t n) {
    _asm {
        pushad;
        xor ebx, ebx;
        mov edi, ecx;
    myloop:
        xor eax, eax;
        xchg eax, edx;
        inc ebx;
        push eax;
        div ebx;
        test edx, edx;
        jnz skip_output;
        stosd;
        xchg eax, ebx;
        stosd;
        xchg eax, ebx;
    skip_output:
        cmp eax, ebx;
        pop edx;
        ja myloop;
        popad;
        ret;
    }
}
int main(int argc, char* argv[]) {
    uint32_t n;
    std::stringstream(argv[1]) >> n;
    std::vector<uint32_t> list(2 * sqrt(n) + 3); // c++ initializes with zeros
    doit(list.data(), n);
    for (auto i = list.begin(); *i; ++i)
        std::cout << *i << '\n';
}

আউটপুটটিতে কিছু বিভ্রান্তি রয়েছে, যদিও এটি অনুমান অনুসরণ করে (বাছাইয়ের প্রয়োজন নেই; স্বতন্ত্রতার প্রয়োজন নেই)।


ইনপুট: 69

আউটপুট:

69
1
23
3

বিভাজকরা জোড়ায়।


ইনপুট: 100

আউটপুট:

100
1
50
2
25
4
20
5
10
10

নিখুঁত স্কোয়ারগুলির জন্য, শেষ বিভাজকটি দুটিবার আউটপুট হয় (এটি নিজের সাথে একটি জুড়ি)।


ইনপুট: 30

আউটপুট:

30
1
15
2
10
3
6
5
5
6

যদি ইনপুটটি নিখুঁত বর্গক্ষেত্রের কাছাকাছি থাকে তবে শেষ জোড়াটি আউটপুট হয় দু'বার। এটি লুপে চেকের ক্রমের কারণে: প্রথমে এটি "বাকী = 0" এবং আউটপুটগুলির জন্য পরীক্ষা করে এবং কেবল তখন এটি লুপ থেকে বেরিয়ে যাওয়ার জন্য "ভাগফল <বিভাজক" এর জন্য পরীক্ষা করে।


0

স্মাইলব্যাসিক, 49 বাইট

INPUT N
FOR D=1TO N/D
IF N MOD D<1THEN?D,N/D
NEXT

আসলে ব্যবহার করে D>N/D= D>sqrt(N)ইতিবাচক সংখ্যার জন্য


0

সি, 87 81 বাইট

@ সেলিংক্যাট , 81 বাইট দ্বারা উন্নত :

i,j;main(n,b)int**b;{for(;j=sqrt(n=atoi(b[1]))/++i;n%i||printf("%u,%u,",i,n/i));}

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


আমার আসল উত্তর, 87 বাইট:

i;main(int n,char**b){n=atoi(b[1]);for(;(int)sqrt(n)/++i;n%i?:printf("%u,%u,",i,n/i));}

সংকলন করুন gcc div.c -o div -lm, এবং সাথে চালান ./div <n>


বোনাস: ও (এন) সময় জটিলতা এবং হার্ডকোডযুক্ত n(46 বাইট + দৈর্ঘ্য ) সহ একটি আরও সংক্ষিপ্ত রূপ n:

i,n=/*INSERT VALUE HERE*/;main(){for(;n/++i;n%i?:printf("%u,",i));}

সম্পাদনা: ইনপুটগুলিকে হার্ডকোড করা উচিত নয় বলে উল্লেখ করার জন্য @ শ্রীওতচিলিজম ওজাইককে ধন্যবাদ, আমি আরজিভি দিয়ে ইনপুট নেওয়ার জন্য মূল জমাটি পরিবর্তন করেছি ified


1
কি nইনপুট? কোনও ভেরিয়েবলে ইনপুট স্থাপন করা বিভিন্ন কারণে এখানে ইনপুট করার কোনও গ্রহণযোগ্য উপায় নয়। আপনি আমাদের গৃহীত এবং অ-গৃহীত ইনপুট এবং আউটপুট ফর্মগুলি সম্পর্কে এখানে আরও দেখতে পারেন: কোডগলফ.মেটা.স্ট্যাককেেক্সচেঞ্জ / প্রশ্নগুলি / ২৪47//২ । এবং যদি আপনি কোনও নির্দিষ্ট ভাষা সম্পর্কে উদ্বিগ্ন হন (যেমন সি) আপনি এখানে দেখতে পারেন: কোডগল্ফ.মেটা.স্ট্যাকেক্সেঞ্জ / সেকশনস / ১১৯২৪/২
অ্যাডহক গার্ফ হান্টার

@ শ্রুতচিলিজম ও'জাইক হ্যাঁ, nইনপুট। আমি এটি পরিবর্তন করার চেষ্টা করব যাতে এটি ইনপুটটিকে অন্য কোনওভাবে নেয়। তথ্যটির জন্য আপনাকে ধন্যবাদ!
ওভারক্লকডসানিক

0

এপিএল (এনএআরএস), 22 টি চর, 44 বাইট

{v∪⍵÷v←k/⍨0=⍵∣⍨k←⍳⌊√⍵}

পরীক্ষা:

  f←{v∪⍵÷v←k/⍨0=⍵∣⍨k←⍳⌊√⍵}
  f 1
1 
  f 2
1 2 
  f 6
1 2 6 3 
  f 9
1 3 9 
  f 90
1 2 3 5 6 9 90 45 30 18 15 10 

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