ตัวเลขที่มีพลังคล้ายกัน


17

ได้รับจำนวนเต็มp> 1ค้นหาเลขที่เล็กที่สุดQ> หน้าดังกล่าวว่ารายการของเลขยกกำลังในตัวประกอบที่สำคัญของQเป็นเดียวกันของของพีไม่ว่าคำสั่งซื้อหรือค่าของปัจจัยสำคัญ

ตัวอย่าง

ตัวประกอบที่สำคัญของp = 20คือ2 2 x 5 1 ยิ่งเลขที่เล็กที่สุดกว่าหน้ากับเลขยกกำลังเหมือนกันในตัวประกอบที่สำคัญของมันคือq = 28 = 2 2 x 7 1

ตัวประกอบที่สำคัญของp = 2500เป็น2 2 x 5 4 ยิ่งเลขที่เล็กที่สุดกว่าหน้ากับเลขยกกำลังเหมือนกันในตัวประกอบที่สำคัญของมันคือq = 2704 = 2 4 x 13 2

กฎระเบียบ

  • อินพุตรับประกันว่าจะเป็นจำนวนเต็มมากกว่า 1
  • นี่คือดังนั้นคำตอบที่สั้นที่สุดในหน่วยไบต์ชนะ

กรณีทดสอบ

Input | Output
------+-------
2     | 3
20    | 28
103   | 107
256   | 6561
768   | 1280
2500  | 2704
4494  | 4510
46552 | 46584
75600 | 105840

2
สำหรับการอ้างอิงนี่คือA081761ใน OEIS
Jonathan Frech

คำตอบ:


9

Huskขนาด 10 ไบต์

§ḟ¤≡ȯÖLgp→

ลองออนไลน์!

explantion

§ḟ       →     Find the first number starting from the input + 1 such that...
        p        The prime factorisation
       g         with equal elements grouped together
    ȯÖL          and sorted by length of groups
  ¤≡             has the same shape as the above applied to the input.

5

Mathematica, 61 ไบต์

(f[x_]:=Sort[Last/@FactorInteger@x];s=#;While[f@++s!=f@#];s)&  

ลองออนไลน์!

-4 ไบต์จาก @Misha Lavrov


วิธีที่รัดกุมมากขึ้นจากการเขียนเช่นห่วงคือWhile s=#;While[f@++s!=f@#];s
Misha Lavrov

1
คุณสามารถแทนที่f[x_]ด้วยf@x_เพื่อบันทึกไบต์
numbermaniac

1
f=Last/@#&@*FactorInteger/*Sortหรือแม้กระทั่งไปเส้นทางองค์ประกอบสลัดของการกำหนด
Misha Lavrov

4

Pyth , 15 ไบต์

fqFmShMrPd8,QTh

ลองที่นี่! หรือตรวจสอบกรณีทดสอบทั้งหมด

มันทำงานอย่างไร

fqFmShMrPd8,QTh   ~ Full program. Q = first input.

f             h   ~ First input where the condition is truthy over [Q+1, Q+2, ...]
           ,QT    ~ The two element list [Q, current value (T)].
   m              ~ Map over ^ with d.
       Pd         ~ The prime factorization of d.
      r  8        ~ Run-Length encode ^.
    hM            ~ Get the first element of each.
 qF               ~ Check if the values are equal.
                  ~ Output implicitly.

ทางเลือก

อีก 15 ไบต์:

LShMrPb8fqyQyTh

และตัวเลือก (อีกต่อไป) สองรายการ:

fqFmSlM.gkPd,QTh
LSlM.gkPbfqyQyTh
LS/LPb{PbfqyQyTh
f!-FmlM.gkPd,QTh


4

Brachylogขนาด 13 ไบต์

<.;?{ḋḅlᵐ}ᵐ=∧

ลองออนไลน์!

นานมาแล้วที่ฉันโพสต์คำตอบ ...

คำอธิบาย

<.               Input < Output
 .;?             The list [Output, Input]
    {    }ᵐ      Map on [Output, Input]:
     ḋ             Prime decomposition
      ḅ            Group into sublists of consecutive equal elements
       lᵐ          Take the length of each sublist
           =∧    The result of the map must be the same for the Output and the Input

4

Python 2 , 176 179 171 170 169 ไบต์

  • เพิ่มอีกสามไบต์เป็นคำถามที่เปลี่ยนจากชุดของเลขยกกำลังไปยังรายการเลขชี้กำลัง ;set(f)sorted(f)ก็เปลี่ยนไป
  • บันทึกแปดไบต์ด้วยขอบคุณ ovs ; กอล์ฟ if / else บล็อกลงเพื่อการคูณ
  • บันทึกเป็นไบต์ แข็งแรงเล่นกอล์ฟ(n!=r)(n>r)ไป
  • บันทึกเป็นไบต์ แข็งแรงเล่นกอล์ฟไปwhile N>1while~-N
N=input();n=-~N
def F(N):
 r,f=0,[]
 while~-N:
	for n in range(2,-~N):
	 if N%n<1:f+=[1]*(n>r);f[-1]+=n==r;r=n;N/=n;break
 return sorted(f)
while F(N)!=F(n):n+=1
print n

ลองออนไลน์!


3

Haskell , 107 ไบต์

import Data.List
import Data.Numbers.Primes
p=sort.map(1<$).group.primeFactors
f x=until((==p x).p)(+1)$x+1

ลองออนไลน์! ตัวอย่างการใช้: f 2500อัตราผลตอบแทน2704อัตราผลตอบแทน

ขอบคุณ nimi ที่ชี้ให้เห็นข้อบกพร่องและบันทึกจำนวนไบต์


ไม่มีการprimeFactorsbuild-in (117 ไบต์)

import Data.List
1%n=[]
x%n|0<-mod x n=n:div x n%n|m<-n+1=x%m
p=sort.map(1<$).group.(%2)
f x=until((==p x).p)(+1)$x+1

ลองออนไลน์!


2

Python - 141 ไบต์

def s(n):
 i=1;d={}
 while n-1:
  i+=1
  if n%i<1:d[i]=d.get(i,0)+1;n/=i;i=1
 return d.values()
a=input()
j=a+1
while s(a)!=s(j):j+=1
print j

โปรแกรมของคุณดูเหมือนจะส่งออกค่าที่ไม่ถูกต้องสำหรับ2500เป็นอินพุต; แทน4624 2704
Jonathan Frech

while n-1:while~-n:สามารถ
Jonathan Frech

2

05AB1E , 15 ไบต์

XµN‚εÓ0K{}ËNI›&

ลองออนไลน์!

คำอธิบาย

Xµ                # Loop over N in [0 ...] until 1 match is found
  N‚              # pair N with input
    ε    }        # apply to each
     Ó            # list prime exponents
      0K          # remove zeroes
        {         # sort
          Ë       # check that they are equal
              &   # and
           NI›    # that N is greater than the input

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.