Nomor BIU (atau nomor yang diramalkan)

10

Cara menemukan mereka

Ambil bilangan bulat positif k. Temukan pembagi nya . Temukan faktor prima yang berbeda dari masing-masing pembagi . Jumlahkan semua faktor ini bersama-sama. Jika angka ini (jumlah) adalah pembagi dari k ( jika jumlah itu membagi k ) maka, angka ini k, adalah angka BIU

Contohnya

Mari kita ambil nomor 54
Temukan semua pembagi: [1, 2, 3, 6, 9, 18, 27, 54]
Temukan faktor prima yang berbeda dari masing-masing pembagi.
CATATAN: Untuk kasus yang 1kita ambil sebagai faktor prima yang berbeda1

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

Sekarang kita mengambil jumlah dari semua faktor-faktor prima
1+2+3+2+3+3+2+3+3+2+3=27
27membagi 54 (daun tidak ada sisa)
Jadi, 54 adalah sebuah nomor Biu .

Lain (cepat) contoh bagi k=55
pembagi: [1,5,11,55]
Sum faktor prima yang berbeda: 1+5+11+5+11=33
33 adalah TIDAK pembagi dari 55, itu sebabnya 55adalah TIDAK sebuah nomor Biu .

Nomor BIU

Inilah 20 yang pertama:

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

tetapi daftar ini terus berlanjut dan ada banyak nomor BIU yang menunggu untuk ditutup oleh Anda!

Tantangan

Diberikan integer n>0sebagai input , output nomor BIU ke - n

Uji Kasus

Input-> Output

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

Ini adalah Jawaban terpendek dalam byte menang!


sumber
2
Tapi 1ini bukan yang utama ...
Stephen
3
@Stephen, itulah sebabnya saya berkata, "Untuk kasus 1, kami menggunakan faktor prima 1 yang berbeda". Ini adalah tantangan saya dan ini adalah salah satu aturan tantangan ini. Saya tidak mengatakan bahwa saya adalah yang utama.
4
Mengapa angka-angka itu disebut "BIU"?
Misha Lavrov
4
Saya tidak yakin tetapi saya pikir itu ada hubungannya dengan unicorn intelektual biseksual yang menggunakannya dalam kehidupan sehari-hari mereka (bukan di alam semesta kita tentu saja ...)
5
Para downvoters, jangan malu-malu. Bagikan pemikiran Anda dengan kami semua.

Jawaban:

5

Jelly , 16 15 byte

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

Cobalah online!

Woohoo untuk builtin (tapi mereka secara misterius bersembunyi dariku kadang jadi -1 byte terima kasih kepada @HyperNeutrino )

Bagaimana itu bekerja

Æ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
fireflame241
sumber
-1 byte menggunakan ÆfQ€bukanÆFḢ€€
HyperNeutrino
2
but they mysteriously hide from me sometime"Jelly adalah permainan pencarian atom dan programmer" ~ i cri everytim
HyperNeutrino
Saya pikir Anda dapat menyimpan 1 byte dengan ÆDÆFSSḢ‘ḍ.
Arnauld
4

05AB1E , 9 byte

µNNÑfOO>Ö

Menggunakan pengodean 05AB1E . Cobalah online!

Adnan
sumber
3

Mathematica, 85 byte

If[#<2,1,n=#0[#-1];While[Count[(d=Divisors)@++n,1+Tr@Cases[d/@d@n,_?PrimeQ,2]]<1];n]&
Misha Lavrov
sumber
3

Sekam , 13 byte

!fṠ¦ö→ΣṁoupḊN

Cobalah online!

Penjelasan

  Ṡ¦ö→Σṁ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
H.Piz
sumber
2

Sebenarnya , 16 byte

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

Cobalah online!

Penjelasan:

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
Mego
sumber
2

Pyth , 22 byte

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

Coba di sini!

Ini adalah solusi Pyth pertama saya, saya mulai mempelajarinya berkat rekomendasi dari beberapa pengguna yang sangat baik dalam obrolan: -) ... Butuh sekitar satu jam untuk menyelesaikannya.

Penjelasan

ef | qZ1!% Zhssm {Pd * M {yP - Seluruh program. Q = input.

 .f - Bilangan bulat pertama dengan hasil yang benar, menggunakan variabel Z.
     qZ1 - Apakah Z sama dengan 1?
   | - Logis ATAU.
                   {YP - Faktor utama, powerset, deduplicate.
                 * M - Dapatkan produk masing-masing. Chunck dan ^ ini untuk pembagi.
              m} Pd - Dapatkan faktor prima yang unik dari masing-masing.
           ss - Ratakan dan jumlahkan.
          h - Penambahan (untuk mengatasinya 1, bah)
       % Z - Modul bilangan bulat saat ini dengan jumlah di atas.
      ! - Negasi logis. 0 -> Benar,> 0 -> Salah.
e - Elemen terakhir.

sumber
1

Haskell , 115 byte

Semua pemahaman daftar di sini mungkin bisa diturunkan, tapi saya tidak yakin bagaimana caranya. Selamat datang saran bermain golf! Cobalah online!

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)

Tidak melakukanolf

Jawaban ini sebenarnya tiga fungsi tumbuk bersama.

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)
Sherlock9
sumber
0

Japt , 22 21 byte

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

Menguji

Saya merasa seperti gmetode fungsi harus mengarah ke solusi yang lebih pendek, tapi saya tidak tahu cara kerjanya!


Penjelasan

Input bilangan bulat implisit U.

@                  }a

Mulai dari 0, kembalikan angka pertama yang mengembalikan true ketika melewati fungsi berikut, dengan Xmenjadi angka saat ini.

Xâ ®   Ã

Dapatkan pembagi ( â) dari Xdan melewati masing-masing melalui fungsi.

k â

Dapatkan faktor ( k) dari elemen saat ini dan hapus duplikat ( â).

xx

Kurangi array dengan tambahan setelah terlebih dahulu melakukan hal yang sama untuk setiap sub-array.

Ä

Tambahkan 1ke hasilnya.

Xv

Tes jika Xdapat dibagi dengan angka itu.

Peningkatan J(awalnya -1) dengan hasil tes itu.

¥

Periksa kesetaraan dengan U.

Shaggy
sumber