সমস্ত স্মুল জুটি সন্ধান করুন


13

ভূমিকা

সংখ্যা তত্ত্ব, আমরা বলতে একটি সংখ্যা -smooth যখন তার মৌলিক উত্পাদক সর্বাধিক সব । উদাহরণস্বরূপ, 2940 7-মসৃণ কারণ ।kk2940=223572

এখানে আমরা একটি স্মুম জুটিটি পর পর দুটি পূর্ণসংখ্যার হিসাবে সংজ্ঞায়িত করি যা উভয়ই স্মোথ। 7-মসৃণ জুটির উদাহরণ হবে কারণ এবং । মজাদার ঘটনা: এটি আসলে সবচেয়ে বড় 7-মসৃণ জুটিkk(4374,4375)4374=2374375=547

স্টারমার 1897 সালে প্রমাণ করেছিলেন যে প্রতিটি এর জন্য কেবল চূড়ান্তভাবে অনেকগুলি স্মার্ট জোড় রয়েছেkk , এবং এই সত্যটি স্টর্মারের উপপাদ্য হিসাবে পরিচিত ।

চ্যালেঞ্জ

আপনার টাস্কটি এমন কোনও প্রোগ্রাম বা ফাংশন লিখতে হবে যা কোনও প্রাইম নাম্বার ইনপুট দেওয়া হয়, আপনি যে কোনও ক্রমের সাথে ডুপ্লিকেট ছাড়াই সমস্ত স্মার্ট জোড়গুলি আউটপুট দেয় বা ফেরত দেয় pairkk

দয়া করে নোট করুন যে এবং মূল সংখ্যাগুলির জন্য , ধরে নিচ্ছেন , সমস্ত স্মূথ জোড়াও স্মূথ জোড়া।pqp<qpq

নমুনা I / O

Input: 2
Output: (1, 2)

Input: 3
Output: (1, 2), (2, 3), (3, 4), (8, 9)

Input: 5
Output: (1, 2), (2, 3), (3, 4), (4, 5), (5, 6), (8, 9), (9, 10), (15, 16), (24, 25), (80, 81)

Input: 7
Output: (1, 2), (2, 3), (3, 4), (4, 5), (5, 6), (6, 7), (7, 8), (8, 9), (9, 10), (14, 15),
        (15, 16), (20, 21), (24, 25), (27, 28), (35, 36), (48, 49), (49, 50), (63, 64),
        (80, 81), (125, 126), (224, 225), (2400, 2401), (4374, 4375)

সীমাবদ্ধতা

প্রোগ্রাম বা ফাংশনটি তাত্ত্বিকভাবে সমস্ত ইনপুটগুলির জন্য সীমাবদ্ধ সময়ে শেষ করা উচিত। স্ট্যান্ডার্ড লুফোলগুলি ডিফল্টরূপে অনুমোদিত নয়।

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

এটি একটি চ্যালেঞ্জ হিসাবে, প্রতিটি ভাষার জন্য স্বল্পতম বৈধ জমা ins


2
আপনি দয়া করে 2, 3, এবং 5 এর জন্য পরীক্ষার কেস যুক্ত করতে পারেন?
জোনাথন অ্যালান


1
হচ্ছে না (1, 2)আউটপুট বাধ্যতামূলক অংশ ..?
কেভিন Cruijssen

@ কেভিন ক্রুজসেন হ্যাঁ, সমস্ত আউটপুটগুলিতে (1, 2)জুটি থাকা উচিত ।
শিয়েরু আসাকোটো

উত্তর:


10

জাভাস্ক্রিপ্ট (ES7),  234  232 বাইট

ফর্মের পেল সমীকরণগুলি সমাধান করে সমাধানগুলি সন্ধান করে , যেখানে হল স্মুথ বর্গক্ষেত্র সংখ্যা।x22qy2=1qP

এটি স্টেরারের মূল প্রক্রিয়া থেকে প্রাপ্ত ডেরিক হেনরি লেহারের পদ্ধতির একটি বাস্তবায়ন ।

এমন কোনও বস্তু প্রদান করে যার কী এবং মানগুলি স্মুল জোড়গুলি বর্ণনা করে ।P

P=>[...Array(P**P)].map((_,n)=>(s=(n,i=0,k=2)=>k>P?n<2:n%k?s(n,i,k+1):s(n/k,i,k+i))(n,1)&&(_=>{for(x=1;(y=((++x*x-1)/n)**.5)%1;);(h=(x,y)=>k--&&h(X*x+n*Y*y,X*y+Y*x,x&s(x=~-x/2)&s(x+1)?r[x]=x+1:0))(X=x,Y=y,k=P<5?3:-~P/2)})(),r={})&&r

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

কিভাবে?

সাহায্যকারী ফাংশন একটি প্রদত্ত পূর্ণসংখ্যা কিনা পরীক্ষা একটি হল -smooth সংখ্যা যখন এটি বলা হচ্ছে সঙ্গে , অথবা একটি বর্গক্ষেত্র বিনামূল্যে 1 -smooth সংখ্যা যখন এটি বলা হচ্ছে সঙ্গে ।snPi=0পি আই = 1 Pi=1

s = (
  n,
  i = 0,
  k = 2
) =>
  k > P ?
    n < 2
  :
    n % k ?
      s(n, i, k + 1)
    :
      s(n / k, i, k + i)

আমরা সমস্ত বর্গক্ষেত্র 1 টি স্মোথ নম্বর , যেখানে উপরের সীমানা হিসাবে ব্যবহৃত হয়।P[1..PP1]PPP!

P=>[...Array(P ** P)].map((_, n) => s(n, 1) && (...))

প্রত্যেকেরই সংখ্যা উপরে পাওয়া যায়, আমরা তালগোল সমীকরণের মৌলিক সমাধান জন্য চেহারা :nx2ny2=1

(_ => {
  for(x = 1; (y = ((++x * x - 1) / n) ** .5) % 1;);
  ...
})()

(উপরে কোডের অ রিকার্সিভ সংস্করণ আমার উত্তর থেকে অন্য চ্যালেঞ্জ )

একবার মৌলিক সমাধান করা হয়ে গেলে, আমরা পুনরাবৃত্ত সম্পর্কগুলি ব্যবহার করে সমাধানগুলি দিয়ে গণনা করি :(x1,y1)(xk,yk)kmax(3,(P+1)/2)

xk+1=x1xk+ny1ykyk+1=x1yk+y1xk

প্রত্যেকের জন্য , আমরা পরীক্ষা কিনা বিজোড় এবং উভয় এবং হয় -smooth। যদি তা হয় তবে আমরা সেগুলি ।xkxk(xk1)/2(xk+1)/2Pr

( h = (x, y) =>
  k-- &&
  h(
    X * x + n * Y * y,
    X * y + Y * x,
    x &
    s(x = ~-x / 2) &
    s(x + 1) ?
      r[x] = x + 1
    :
      0
  )
)(X = x, Y = y, k = P < 5 ? 3 : -~P / 2)

1: কারণ এটা ভাজক এর primality পরীক্ষা নয়, ফাংশন আসলে, কিছু অ-বর্গ বিনামূল্যে সংখ্যার জন্য truthy হতে হবে এমনকি যখন এটা বলা হচ্ছে সঙ্গে । তাদের বেশিরভাগ ফিল্টার আউট করার ধারণাটিটি যাতে খুব বেশি অপ্রয়োজনীয় পেলের সমীকরণগুলি সমাধান না হয়।si=1


হাই আরনাউল্ড! আমি কেবল এই দু'জনের চারপাশে আমার মাথা গুটিয়ে রাখতে পারিনি: x = ~-x / 2এবং -~P / 2.এগুলি কোনও ধরণের গোলাকার ...
রাহুল ভার্মা

1
@ আরভি ~xএকটি সামান্য দিকের নয়, যা গণনা করছে -(x+1)। অতএব, ~-xহয় -(-x+1)= x-1এবং -~xহয় -(-(x+1))= x+1। জেএসের সমস্ত বিটওয়াইজ অপারেশনের মতো, কেবলমাত্র 32-বিট পূর্ণসংখ্যার অংশটি বিবেচনায় নেওয়া হয়। সুতরাং তারা সত্যই গোলাকার জন্য ব্যবহার করা যেতে পারে। তবে এবং উভয়ই এখানে ইতিমধ্যে পূর্ণসংখ্যা। পিxP
আর্নৌল্ড

4

জেলি , 16 14 বাইট

4*ÆfṀ<ɗƇ‘rƝLÐṂ

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

পর্যন্ত জোড়গুলির জন্য চেকগুলি যা বৃহত্তর জন্য অকার্যকর তবে এটি নিশ্চিত হওয়া উচিত যে কোনওটিই মিস হয়েছে।4kk

1 জন বাইট সংরক্ষণের জন্য @ জনাথন অ্যালানকে ধন্যবাদ!

ব্যাখ্যা

4*ÆfṀ<ɗƇ‘rƝLÐṂ  | Monadic link, input k

4*              | 4**k, call this n
      ɗƇ        | For each number from 1..n filter those where:
  Æf            |   - Prime factors
    Ṁ           |   - Maximum
     <  ‘       |   - Less than k+1
         rƝ     | Inclusive range between neighbouring values
           LÐṂ  | Keep only those of minimum length (i.e. adjacent values)

1
4kk!24k

1
দ্রুত সাড়া দেওয়ার জন্য ধন্যবাদ। আমি একইভাবে চিন্তা করছিলাম, তবে আরও বিস্তৃতভাবে: "ফ্যাক্টরিয়ালটি খুব দ্রুত উঠে যায়, এটি সম্ভবত যথেষ্ট বড়।" (দেখা যাচ্ছে আমি এটি স্কোয়ার না করা না করে)। সংক্ষিপ্ততর এবং আরও দক্ষ গল্ফের জন্য অভিনন্দন, আপনি আমার আপভোট পেয়েছেন।
কমরেড স্পার্কলপনি

1
দ্রষ্টব্য ( oeis.org/A002072 থেকে ) "ক (এন) <10 ^ n / n বাদে এন = 4। (অনুমানিত, পরীক্ষামূলক তথ্য থেকে।) - এমএফ হাসলার, জানুয়ারী 16 2015"। আমি মনে করি প্রজেক্টিউক্লিড.আর.ডাউনলোড / পিডিএফ_1/euclid.ijm/1256067456 (উপপাদ্য 7) এ লেহমারের দুর্বল আবদ্ধের সাথে আমাদের থাকতে হবে যদি না অন্যথায় প্রমাণ করতে পারি।
জোনাথন অ্যালান

2
... গণিত এসই তে একেবারেই জিজ্ঞাসা করার একটি উন্মুক্ত প্রশ্ন রয়েছে !
জোনাথন অ্যালান

1
@ পিটারটেলর যা সংখ্যার জন্য, সর্বোচ্চ সংখ্যার জন্য নয়। সমস্যাটি সর্বাধিক সংখ্যক জোড়ের সীমাবদ্ধতা জানার ফলে আপনি অনুসন্ধান বন্ধ করতে দেন না
নিক কেনেডি


2

জেলি , 123 বাইট

¹©Æ½Ø.;µU×_ƭ/;²®_$÷2ị$}ʋ¥⁸;+®Æ½W¤:/$$µƬṪ€F¹;Ḋ$LḂ$?ṭ@ṫ-ṚZæ.ʋ¥ƒØ.,U¤-ịWµ1ịżU×®W¤Ɗ$æ.0ị$ṭµ³’H»3¤¡
ÆRŒPP€ḟ2ḤÇ€ẎḢ€+€Ø-HÆfṀ€<ẠʋƇ‘

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

2×max(3,k+12)x12,x+12

একটি সম্পূর্ণ প্রোগ্রাম যা একক আর্গুমেন্ট, নেয় এবং জোড়াগুলির তালিকার একটি তালিকা প্রদান করে। উপরের কোডটি চূড়ান্ত আউটপুটটি সাজায় না, তবে টিআইও লিঙ্কটি করে।k


2

হাস্কেল , 118 107 বাইট

-11 বাইট ধন্যবাদ নিমিকে

q 1=[1]
q n=(:)<*>q.div n$[x|x<-[2..n],mod n x==0]!!0
f k|let r=all(<=k).q=[(n,n+1)|n<-[1..4^k],r n,r(n+1)]

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

  • q n এর সমস্ত মৌলিক কারণগুলির একটি তালিকা গণনা করে n
  • f kসমস্ত জোড়ের একটি তালিকা ফিল্টার করে প্রদত্ত কে-এর জন্য স্মোথ জোড়াগুলির একটি তালিকা তৈরি করেk

1
আপনি এর [2..n]মধ্যে লুপ করতে pএবং এটিকে ইনলাইন করতে পারেন qএটি অনলাইন চেষ্টা করুন!
নিমি

1

জেলি , 24 বাইট

³!²R‘Ė
ÇÆFḢ€€€’<³FȦ$€Tị¢

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

এটি 7 এর জন্য দীর্ঘ সময় নেয়, তবে আপনি যদি ফ্যাক্টরিয়ালটির স্কোয়ারিং সরিয়ে ফেলেন তবে এটি আরও দ্রুত গতিবেগ করে: অনলাইনে চেষ্টা করে দেখুন!

ব্যাখ্যা:

³!²R‘Ė                Generates a list like [[1,2],[2,3],...]
³!²                  Take the square of the factorial of the input
   R                 Range 1 through through the above number.
    ‘Ė               Decrement and enumerate, yielding desired list


ÇÆFḢ€€€’<³FȦ$€Tị¢  
Ç                    Get the list of pairs  
 ÆF                  Get the prime factors of each number
   Ḣ€€€              Get the base of each
       ’<³           Is each base less than or equal to the input?
          FȦ$€       Check that all bases of a pair fit the above.
              T      Get a list of the truthy indexes
               ị¢    Index into the original list of pairs
                     Implicit output

-3 বাইটস @ জোনাথন অ্যালেনকে ধন্যবাদ


1
আমি জেলি পড়ি না, আপনি কীভাবে এটি কাজ করে তার একটি ব্যাখ্যা দিতে পারেন?
অজ্ঞতার

আমি মনে করি না এটি কাজ করে - এবং(8,9) থেকে 3-মসৃণ জুটি নয় ? 9 = 3 28=239=32
জোনাথন অ্যালান

আমি নিশ্চিত যদিও এটি আছে। কী ভাববে যে তা ধরে রাখবে?
জোনাথন অ্যালান

@ জোনাথান অ্যালান নায়েভে আশাবাদ এবং আমি যে সমস্ত উদাহরণ দেখেছি তার সত্যতা (স্বীকৃতভাবে অনেকগুলি নয়), সবচেয়ে বড় জুটিটি কম k!(৩ টি বাদে, যা একটি ছোট সংখ্যার কারণে একটি ছোট ফ্যাক্টরিয়াল রয়েছে) is
কমরেড স্পার্কলপনি

1
আপনি যে উপরের সীমানাটি ব্যবহার করছেন এটি একটি জোড়ায় ব্যবহৃত সর্বাধিক সংখ্যার উপর, জোড় সংখ্যার উপর নয় (আপনি জোড় থামানোর জন্য কখনই জানবেন না যে আপনি জোড় সংখ্যার উপরের একটি উচ্চতর বাউন্ড প্রয়োগ করতে পারবেন না!) বৃহত্তম জুটির পণ্যের উপরের আবদ্ধের জন্য উপপাদ্য 7 দেখুন।
জোনাথন অ্যালান

1

পাইথন 3 + সিম্পি, 116 বাইট

import sympy
def f(k):x=[i for i in range(2,4**k)if max(sympy.factorint(i))<=k];return[(y,y+1)for y in x if y+1in x]

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

পাইথন 3 + সিম্পি, 111 বাইট

from sympy import*
def f(k):
 b=1
 for i in range(2,4**k):
  x=max(factorint(i))<=k
  if x&b:print(i-1,i)
  b=x

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

আমার দুই বৈচিত্র জেলি উত্তর কিন্তু পাইথন 3 তারা উভয় একটি ফাংশন যা একটি আর্গুমেন্ট গ্রহণ সংজ্ঞায়িত k। প্রথমটি জোড়গুলির টিপলগুলির একটি তালিকা প্রদান করে যা মানদণ্ডগুলি পূরণ করে। দ্বিতীয়টি তাদের ছদ্মবেশে প্রিন্ট করে।




1

05 এ বি 1 ই , 16 বাইট

°LʒfàI>‹}Xšü‚ʒ¥`

n>3

ব্যাখ্যা:

°                # Take 10 to the power of the (implicit) input
 L               # Create a list in the range [1, 10^input]
  ʒ              # Filter this list by:
   fà            #  Get the maximum prime factor
     I>‹         #  And check if it's smaller than or equal to the input
        }Xš      # After the filter: prepend 1 again
           ü‚    # Create pairs
             ʒ   # And filter these pairs by:
              ¥` #  Where the forward difference / delta is 1

0

স্ট্যাক্স , 14 বাইট

Θ",²aÇu,á‼⌐çLB

এটি চালান এবং এটি ডিবাগ করুন

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


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