具有相似功效的数字


17

给定一个整数P> 1,找出最小的整数Q> p,使得的因式分解指数列表中q是同类的的p,无论顺序或素因子值。

例子

p = 20的素数分解为2 2 x 5 1。在素数分解中具有相同指数的大于p的最小整数为q = 28 = 2 2 x 7 1

p = 2500的素数分解为2 2 x 5 4。在素数分解中具有相同指数的,大于p的最小整数为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
仅供参考,这是OEIS中的A081761
乔纳森·弗雷希

Answers:


9

外壳,10个字节

§ḟ¤≡ȯÖLgp→

在线尝试!

外植

§ḟ       →     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)&  

在线尝试!

@Misha Lavrov的-4字节


编写这样一个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阻止乘法。
  • 保存一个字节;golfed (n!=r)(n>r)
  • 保存一个字节;golfed 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 2500yields 2704

感谢nimi指出缺陷并节省了一堆字节。


没有primeFactors内置(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
乔纳森·弗雷希

while n-1:可以while~-n:
乔纳森·弗雷希

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.