পৌঁছনীয় সংখ্যা


14

সংজ্ঞা

  • এলিউর ফি ফাংশন (একেএ টোটিনেন্ট ফাংশন ): একটি ফাংশন যা একটি ধনাত্মক সংখ্যা নেয় এবং প্রদত্ত সংখ্যার সাথে সহ-প্রধান যে প্রদত্ত সংখ্যার তুলনায় ইতিবাচক সংখ্যার সংখ্যা কম দেয়। এটি হিসাবে চিহ্নিত করা হয় φ(n)

  • পৌঁছানো সংখ্যা : যদি সেখানে একটি ধনাত্মক পূর্ণসংখ্যা বিদ্যমান xযেমন যে φ(x) == n, তারপর nহয় পৌঁছানো

কার্য

প্রদত্ত ইতিবাচক পূর্ণসংখ্যটি পৌঁছনীয় কিনা তা নির্ধারণ করতে একটি ফাংশন / প্রোগ্রাম লিখুন।

ইনপুট

যে কোনও যুক্তিসঙ্গত বিন্যাসে একটি ধনাত্মক সংখ্যা। কেউ অনুমান করতে পারেন যে সংখ্যাটি ভাষার দক্ষতার মধ্যে রয়েছে। Unary ইনপুট গ্রহণ করা হয়।

আউটপুট

দুটি সুসংগত মান, একটি পৌঁছনীয় সংখ্যার জন্য এবং অন্যটি অ্যাক্সেসযোগ্য সংখ্যার জন্য। দুটি মান দুটিই যে কোনও রকম হতে পারে, যতক্ষণ না সেগুলি সুসংগত থাকে।

Testcases

অ্যাক্সেসযোগ্য সংখ্যা হ'ল 100:

1, 2, 4, 6, 8, 10, 12, 16, 18, 20, 22, 24, 28, 30, 32, 36, 40, 42, 44, 46, 48, 52, 54, 56, 58, 60, 64, 66, 70, 72, 78, 80, 82, 84, 88, 92, 96

( ওইআইএসে A002202 )

বিধি

স্ট্যান্ডার্ড লুফোলস প্রযোজ্য।

বিজয়ী মানদণ্ড

এটি । সর্বনিম্ন বাইট-কাউন্ট জয়ের সাথে জমা দেওয়া।

তথ্যসূত্র



1
আমি এক লাইনের রেটিনা জবাবের জন্য একটি অনুগ্রহ অফার করি, যেখানে এক লাইনটি একটি সরল রেজেক্স (ব্যাকটিক্স নেই)।
লিকি নুন

@ ল্যাকইনুন আমি কিছুটা বিভ্রান্ত, এখনও অবধি বুঝতে পেরেছি phi(n) = count { m : 1 <= m <= n AND (m,n) are coprime }.. এটা কি সত্য?
খালেদ.কে

@ খালেদ.কে হ্যাঁ, এটি সত্য।
লিকি নুন

উত্তর:


6

জেলি , 7 6 বাইট

²RÆṪe@

হুবহু দ্রুত নয়। ফেরত পাঠায় 1 বা 0

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

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

²RÆṪe@  Main link. Argument: n

²       Square; yield n².
 R      Range; yield [1, ..., n²].
  ÆṪ    Compute the totient of each integer in the range.
    e@  Exists swap; test if n occurs in the generated array.

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

1
পাশবিক বল. সামগ্রিক ফাংশনের জন্য এখানে একটি নিম্ন সীমাবদ্ধ রয়েছে, সুতরাং এটি যথেষ্ট পরিমাণে যথেষ্ট পরিসর, মানচিত্রের সারসংক্ষেপ গ্রহণ এবং ইনপুটটির উপস্থিতিগুলি পরীক্ষা করার জন্য যথেষ্ট।
ডেনিস

আপনি কি প্রমাণ করতে পারবেন যে বর্গমূলটি সর্বনিম্ন?
লিকি নুন

বর্গমূলটি আসলে একটি নিম্ন সীমা নয়, তবে স্কয়ার্ট (2) দ্বারা বিভক্ত বর্গমূল হয়। আমি ইতিবাচক যে দ্বিগুণ করার প্রয়োজন নেই, তবে আমি কিছুটা ঘুম না পাওয়া পর্যন্ত একটি প্রমাণ অপেক্ষা করতে হবে। এখনই খুব ক্লান্ত।
ডেনিস

4
বাস্তবিক @LeakyNun, এর থিম 3 এই কাগজ প্রমাণ করে যে বর্গমূল একটি নিম্ন যদি না আবদ্ধ হয় এন = 2k বিজোড় সঙ্গে । যেহেতু k এবং 2k এর সমষ্টি রয়েছে, তাই দ্বিগুণ করার প্রয়োজন নেই।
ডেনিস

6

গণিত, 28 বাইট

EulerPhi@Range[#^2]~FreeQ~#&

ডেনিসের জেলি উত্তরের মতো, আমরা ইনপুটটির বর্গক্ষেত্র পর্যন্ত সমস্ত সংখ্যার মান comp-মানগুলি গণনা করি এবং দেখি যে ইনপুটটি এতে প্রদর্শিত হয়েছে কিনা। রিটার্নস Falseযদি ইনপুট পৌঁছানো এবং Trueএটা না পারেন। হ্যাঁ, এটি বিভ্রান্তিকর। তবে এর FreeQচেয়ে বাইট আরও সংক্ষিপ্ত MatchQএবং হেই, অনুমানটি কোনও দুটি ধারাবাহিক মান>> বলেছে


2

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

রিটার্ন 0বা true

f=(n,x=n*2)=>x?(p=i=>(c=(a,b)=>a?c(b%a,a):b<2)(i,x)+(i&&p(--i)))(x)==n||f(n,x-1):0

এটি এই ধারণার উপর ভিত্তি করে তৈরি করা হয় যে যদি x বিদ্যমান থাকে তবে x ≤ 2n । যদি মিথ্যা প্রমাণিত হয় তবে এটি ব্যবহারের জন্য আপডেট করা উচিতx=n*n পরিবর্তে x=n*2(একই আকার, অনেক ধীর)।

একটি প্রান্তের কেস হল এন = 128 যার জন্য ute (255) গণনা করা দরকার ।

ডেমো


সুবিধামত ফার্মার মৌলিক পরপর প্রান্ত ক্ষেত্রে সব পরপর দান বৃদ্ধি হয় n=2, n=8, n=128, n=32768এবং n=2147483648
নীল

1

অ্যাক্সিয়োম, 56 বাইট

f(x:PI):Boolean==member?(x,[eulerPhi(i)for i in 1..2*x])

আমি ঠিক জানি না ... পরীক্ষার কোড এবং ফলাফল

(35) -> [i  for i in 1..100|f(i)]
   (35)
   [1, 2, 4, 6, 8, 10, 12, 16, 18, 20, 22, 24, 28, 30, 32, 36, 40, 42, 44, 46,
    48, 52, 54, 56, 58, 60, 64, 66, 70, 72, 78, 80, 82, 84, 88, 92, 96, 100]

ইনপুট x = 500 না হওয়া অবধি 1 .. (2 * x) ব্যাপ্তি ঠিক থাকবে ...




0

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

সম্পাদনা : একটি বাইট সংরক্ষণ করা হয়েছে কারণ স্ট্যাকের পর্যাপ্ত উপাদান না থাকলে ইনপুট পুনরায় ব্যবহৃত হয়।

আউটপুটগুলি যদি পৌঁছনো যায় তবে 0, যদি না হয়।

এক্স ≤ 2n উপস্থিত থাকলে অনুমানের উপর নির্ভর করে।

xGNÕQi1,q}}0

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

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

              # implicit input    
x            # push input, 2 * input
 G           # for N in 1..2*input
             # implicit push input
  N          # push N
   Õ         # push totient of N
    Q        # check if both are equal
     i.      # if equal
      1,     # print 1
        q    # quit program
         }   # end if
          }  # end for
           0 # push 0 if condition never reached
             # implicit print

0

সি, 123 বাইট

g(a,b){return!a?b:g(b%a,a);}
i;r;f(n){for(i=2,r=1;i<n;i++)r+=(g(i,n)==1);}
t;k;s(m){for(k=m,t=0;!t&(k<m*m);)f(++k),t=(r==m);}

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

#include <stdio.h>

// gcd function
g(a,b){return!a?b:g(b%a,a);}

// Euler phi(x) function
i;r;f(n){for(i=2,r=1;i<n;i++)r+=(g(i,n)==1);}

// check if m is reachable, phi(x) for x in (m , m^2]
t;k;s(m){for(k=m,t=0;!t&(k<m*m);)f(++k),t=(r==m);}

main()
{
    // print all reachable number below 50
    for(int x=1; x<50; x++)
    {
        s(x);

        if(t)
        {
            printf(" %d ~ phi(%d) \n", x, k);
        }
    }
}

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