BIU编号(或汇总编号)


10

如何发现他们

取正整数k。找到它的除数。找到每个除数不同素数。将所有这些因素加在一起。如果此数字(和)是k的除数(如果该和除以k),则此数字k是BIU数

例子

让我们以数字为单位:54
查找所有除数: [1, 2, 3, 6, 9, 18, 27, 54]
查找每个除数的不同素数因子
注意:对于1我们,我们将其视为不同的素因子1

1  -> 1  
2  -> 2  
3  -> 3  
6  -> 2,3  
9  -> 3  
18 -> 2,3  
27 -> 3  
54 -> 2,3 

现在我们采取的总和所有这些素因子
1+2+3+2+3+3+2+3+3+2+3=27
27鸿沟54(叶子没有余数)
所以,54 一个BIU数

另一个(快速),例如为k=55
除数: [1,5,11,55]
鲜明的首要因素总: 1+5+11+5+11=33
33不是 55的约数,这就是为什么55不是一个BIU数

BIU号码

以下是其中的前20个:

1,21,54,290,735,1428,1485,1652,2262,2376,2580,2838,2862,3003,3875,4221,4745,5525,6750,7050 ...

但这个清单还在继续,有许多BIU号码正等待您发现!

挑战

给定一个整数n>0作为输入输出n个BIU编号

测试用例

输入->输出

1->1  
2->21   
42->23595  
100->118300    
200->415777    
300->800175    

这是最短答案以字节为单位!


2
但是1不是主要的……
Stephen

3
@Stephen多数民众赞成在为什么我说“对于1的情况,我们将其作为不同的素因1”。这是我的挑战,这是挑战的规则之一。我没有说1是质数。

4
为什么将这些数字称为“ BIU”?
Misha Lavrov

4
我不确定,但我认为这与双性恋知识独角兽在日常生活中使用它们有关(当然,这在我们的宇宙中也没有……)

5
投票者,不要害羞。与我们其他人分享您的想法。

Answers:


5

果冻16 15字节

ÆDÆfQ€SS‘ḍ
1Ç#Ṫ

在线尝试!

Woohoo for buildins(但是有时它们会神秘地对我隐藏,所以多亏了@HyperNeutrino,所以-1个字节

怎么运行的

ÆDÆfQ€SS‘ḍ - define helper function: is input a BIU number?
ÆD             - divisors
  Æf           - list of prime factors
    Q€         - now distinct prime factors
      SS       - sum, then sum again ('' counts as 0)
        ‘      - add one (to account for '')
         ḍ     - does this divide the input?

1Ç#Ṫ - main link, input n
  #     - starting at 
1          - 1
        - get the first n integers which meet:
 Ç         - helper link
   Ṫ    - tail

使用-1字节ÆfQ€,而不是ÆFḢ€€
HyperNeutrino

2
but they mysteriously hide from me sometime“果冻是原子躲藏的游戏,程序员必须寻求”
〜i

我认为您可以使用保存1个字节ÆDÆFSSḢ‘ḍ
Arnauld



3

外壳,13个字节

!fṠ¦ö→ΣṁoupḊN

在线尝试!

外植体

  Ṡ¦ö→ΣṁoupḊ    Predicate: returns 1 if BIU, else 0.
           Ḋ    List of divisors
       ṁ        Map and then concatenate
        oup     unique prime factors
      Σ         Sum
    ö→          Add one
  Ṡ¦            Is the argument divisible by this result
 f          N   Filter the natural numbers by that predicate
!               Index

2

实际上,16个字节

u⌠;÷♂y♂iΣu@%Y⌡╓N

在线尝试!

说明:

u⌠;÷♂y♂iΣu@%Y⌡╓N
u⌠;÷♂y♂iΣu@%Y⌡╓   first n+1 numbers x starting with x=0 where
   ÷                divisors
    ♂y              prime factors of divisors
      ♂iΣu          sum of prime factors of divisors, plus 1
  ;       @%        x mod sum
            Y       is 0
               N  last number in list

2

Pyth,22个字节

e.f|qZ1!%Zhssm{Pd*M{yP

在这里尝试!

这是我有史以来第一个Pyth解决方案,由于一些非常友好的用户在聊天中的建议,我开始学习它:-)...花了我大约一个小时来解决。

说明

ef | qZ1!%Zhssm {Pd * M {yP-整个程序。Q =输入。

 .f-使用变量Z的前Q个整数,其结果真实。
     qZ1-Z是否等于1?
   | -逻辑或。
                   {yP-素数,幂集,重复数据删除。
                 * M-获取每个的乘积。此块和^用于除数。
              m} Pd-获得每个元素的唯一素因。
           ss-拼合和。
          h-增量(处理1,bah)
       %Z-通过上述总和对当前整数求模。
      !-逻辑否定。0-> True,> 0-> False。
e-最后一个元素。

1

Haskell,115个字节

这里的所有列表理解都可能被忽略,但是我不确定如何做到。欢迎打高尔夫球!在线尝试!

x!y=rem x y<1
b n=[a|a<-[1..],a!(1+sum[sum[z|z<-[2..m],m!z,and[not$z!x|x<-[2..z-1]]]|m<-[x|x<-[2..a],a!x]])]!!(n-1)

开球

这个答案实际上是将三个功能融合在一起。

divisors a = [x | x <- [2..a], rem a x == 0]
sumPrimeDivs m = sum [z | z <- [2..m], rem m z == 0, and [rem z x /= 0 | x <- [2..z-1]]]
biu n = [a | a <- [1..], rem a (1 + sum [sumPrimeDivs m | m <- divisors a]) == 0] !! (n-1)

0

Japt22 21字节

@¥(J±XvXâ ®k âÃxx Ä}a

测试一下

我觉得g函数方法应该导致更短的解决方案,但是我不知道它是如何工作的!


说明

整数的隐式输入U

@                  }a

从开始0,返回当通过以下函数传递时返回true的第一个数字,即X当前数字。

Xâ ®   Ã

获取的除数(â),X并将每个除数通过一个函数。

k â

获取k当前元素的因数(),然后删除重复项(â)。

xx

在对每个子数组进行相同操作后,通过加法来减少数组。

Ä

添加1到结果中。

Xv

测试是否X可被该数字整除。

通过测试的结果J(最初-1)增加。

¥

与检查是否相等U

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.