Hitung pembagi angka


26

pengantar

Ini adalah tantangan yang sangat sederhana: cukup hitung pembagi angka. Kami pernah menghadapi tantangan yang serupa tetapi lebih rumit sebelumnya, tapi saya bermaksud yang ini menjadi entry-level.

Tantangan

Buat program atau fungsi yang, dengan satu bilangan bulat positif N, menghasilkan atau mengembalikan berapa banyak pembagi yang dimilikinya, termasuk 1 dan N.

Input: Satu bilangan bulat> 0. Anda dapat menganggap bahwa angka tersebut dapat direpresentasikan dalam tipe numerik asli bahasa Anda.

Output: Jumlah pembagi integer positif yang dimilikinya, termasuk 1 dan nomor itu sendiri.

Pengajuan akan dicetak dalam byte . Anda mungkin menemukan situs web ini berguna, meskipun Anda dapat menggunakan metode yang masuk akal untuk menghasilkan jumlah byte Anda.

Ini , jadi skor terendah menang!

Sunting: Sepertinya jawaban Pyth 5-byte FryAmTheEggman adalah pemenangnya! Namun, jangan ragu untuk mengirimkan jawaban baru; jika Anda bisa mendapatkan sesuatu yang lebih pendek, saya akan mengubah jawaban yang diterima.

Uji Kasus

ndiv(1) -> 1
ndiv(2) -> 2
ndiv(12) -> 6
ndiv(30) -> 8
ndiv(60) -> 12
ndiv(97) -> 2
ndiv(100) -> 9

Papan peringkat

Berikut ini adalah Stack Snippet untuk menghasilkan leaderboard biasa dan gambaran umum pemenang berdasarkan bahasa.

Untuk memastikan bahwa jawaban Anda muncul, silakan mulai jawaban Anda dengan tajuk utama, menggunakan templat Penurunan harga berikut:

# Language Name, N bytes

di mana Nukuran kiriman Anda. Jika Anda meningkatkan skor Anda, Anda dapat menyimpan skor lama di headline, dengan mencoretnya. Contohnya:

# Ruby, <s>104</s> <s>101</s> 96 bytes

Jika Anda ingin memasukkan beberapa angka dalam tajuk Anda (mis. Karena skor Anda adalah jumlah dari dua file atau Anda ingin membuat daftar hukuman penterjemah secara terpisah), pastikan bahwa skor sebenarnya adalah angka terakhir di tajuk:

# Perl, 43 + 2 (-p flag) = 45 bytes

Anda juga dapat membuat tautan nama bahasa yang kemudian akan muncul di cuplikan papan peringkat:

# [><>](http://esolangs.org/wiki/Fish), 121 bytes

Jawaban:


19

Pyth, 5

l{yPQ

Menggunakan operasi himpunan bagian pada faktor utama input, kemudian hanya menyimpan daftar faktor unik dan mengembalikan jumlah ini.

Test Suite

Penjelasan

Menggunakan 25 sebagai contoh, sehingga daftar subset tidak terlalu panjang

l{yPQ     ## implicit:  Q = eval(input()) so Q == 25
   PQ     ## Prime factors of Q, giving [5, 5]
  y       ## All subsets, giving [[], [5], [5], [5, 5]]
 {        ## Unique-fiy, giving [[], [5], [5, 5]]
l         ## Length, print implicity

Menarik. Pendekatan yang bagus
Cyoce

14

C ++ C, 43 57 56 46 43 byte

Atas saran Martin Büttner:

i,c;f(n){for(i=c=n;i;n%i--&&--c);return c;}

1
Tunggu, mari kita hitung keduanya, untuk 43:i,c;f(n){for(i=c=n;i;n%i--&&--c);return c;}
Martin Ender

@ MartinBüttner Wow, wow. Serius! _ / \ _
Sahil Arora

1
Indah! : ~)!
sweerpotato

11

LabVIEW, 4938 Bytes

Yah itu jelas tidak cocok untuk golf kode tetapi apa pun, jadi untuk posting pertama saya dan lolz begini. masukkan deskripsi gambar di sini


Selamat Datang di Programming Puzzles dan Code Golf! Bagaimana Anda menilai ini, jika Anda tidak keberatan saya bertanya? Saya tidak dapat menemukan preseden di Meta.
bkul

saya menyimpannya dan mengambil ukurannya
Eumel

Dan itu 4,938 byte? Bukan kilobyte, misalnya?
bkul

untuk akurasi saya mengambil jumlah byte bukan jumlah kb
Eumel

4
@ Bkul Saya pikir kebingungan ini disebabkan oleh ., yang saya cukup yakin dimaksudkan sebagai pemisah seribu, bukan titik desimal (seperti yang umum dalam beberapa bahasa).
Martin Ender

10

Haskell, 28 byte

f n=sum[0^mod n i|i<-[1..n]]

Kuncinya di sini adalah untuk menguji apakah sisanya 0menggunakan fungsi indikator 0^.

0^0 = 1
0^_ = 0

Ini berfungsi karena setiap kekuatan positif 0 adalah 0, sedangkan 0 ^ 0 secara kombinatorial adalah produk kosong dari 1.

Bandingkan ini dengan pemfilteran

f n=sum[1|i<-[1..n],mod n i<1]

7

Dyalog APL , 7 6 byte

≢∘∪⊢∨⍳

Ini adalah fungsi tanpa nama yang dapat dinamai dan kemudian digunakan kembali untuk setiap ( ¨) kasus uji sebagai berikut:

      f ← ≢∘∪⊢∨⍳
      f¨ 1 2 12 30 60 97 100
1 2 6 8 12 2 9

Penjelasan:

 ┌─┴──┐  
 ∪  ┌─┼─┐
 ∘  │ ∨ │
 ̸≡  ⊢   ⍳

Menghitung yang unik dari GCD sendiri dan masing-masing bilangan bulat-sampai .

Terima kasih kepada ngn untuk menyimpan byte.


Versi lama: +/0=⍳|⊢

Begini Cara kerjanya:

  ┌─┴─┐      
  / ┌─┼───┐  
┌─┘ 0 = ┌─┼─┐
+       ⍳ | ⊢

⍳|⊢1-through-argumen pembagian-sisa argumen
0=Boolean jika 0 sama dengan sisa pembagian
+/Jumlah boolean, yaitu jumlah yang.


6

Python 2, 37 byte

f=lambda n,i=1:i/n or(n%i<1)+f(n,i+1)

Fungsi rekursif. Input opsional ipada pembagi yang diuji. Ekspresi (n%i<1)menguji pembagian, dengan True(yang sama dengan 1) untuk pembagi. Hasilnya ditambahkan ke ekspresi recusive untuk i+1. Ketika i==ntercapai, lantai-bilangan bulat i/ndievaluasi untuk 1, dan nilai itu dikembalikan sebagai kasus dasar, yang dengan nsendirinya menjadi pembagi n.


38:

lambda n:sum(n%-~i<1for i in range(n))

Fungsi anonim. Tes semua kemungkinan pembagi 1melalui n. Ini digeser naik dari 0melalui n-1di range(n)menggunakan -~, yang menambahkan 1. Menjumlahkan bools menggunakan fakta bahwa Python memperlakukan True/ Falsesebagai 1/ 0.


6

Retina , 17 byte

(?<=(.+))(?=\1*$)

Input dalam unary , output dalam desimal.

Cobalah online.

Ketika dipanggil dengan regex tunggal, Retina hanya menghitung pertandingan. Regex itu sendiri cocok dengan posisi , di mana angka unary di sebelah kiri itu adalah pembagi dari seluruh input. Saya juga memanfaatkan fakta bahwa lookaround adalah atom, sehingga saya tidak perlu menggunakan ^jangkar.

Tampilan pertama hanya menangkap seluruh awalan dalam grup 1. Ini tidak akan pernah gagal, jadi setelah melihat ke belakang kita tahu apa yang ada di grup 1 dan itu tidak akan berubah lagi.

Lookahead kemudian memeriksa apakah kita dapat mencapai ujung string dengan mengulangi string yang ditangkap (pembagi potensial kita) 0 kali atau lebih.


6

J, 10 byte

[:*/1+_&q:

Ini adalah kata kerja monadik tanpa nama. Ini menghitung σ 0 (∏p k α k ) sebagai ∏ (α k + 1) .

Cobalah online dengan J.js .

Bagaimana itu bekerja

[:*/1+_&q:    Right argument: y

      _&q:    Compute all exponents of the prime factorization of y.
    1+        Add 1 to each exponent.
[:*/          Reduce by mutiplication.

Saya tidak berpikir q:diperbolehkan karena itu memecahkan bagian penting dari tantangan. Bagaimana kalau[:+/0=]|~1+i.
FUZxxl

Itu akan menjadi duplikat dari jawaban ini . Selain itu, bawaan tidak dilarang secara default, dan tantangannya sepertinya tidak menyebutkannya.
Dennis

Orang bawaan yang melakukan semua / hampir semua pekerjaan tantangan biasanya dilarang tetapi saya dapat mengikuti alasan Anda q: .
FUZxxl

1
Mereka tidak. Saya berharap mereka, tetapi mereka tidak.
Dennis

Hrmpf hrmpf yang sedikit menyebalkan.
FUZxxl

6

Golfscript, 19 18 17 13 byte

Dengan terima kasih kepada Martin Büttner .

~.,\{\)%!}+,,

Bagaimana itu bekerja

~               Evaluate the input, n
 .,             Duplicate the input, create array [0..n-1]
   \            Swap array and n
    {    }+     Add n to block == {n block}
     \          Swap n with i in array
      )         Increment i
       %        n mod i
        !       Logical not so that 1 if divisible by n else 0
           ,    Filter array using block for all i divisible by n
            ,   Get length of the filtered array, the answer

Juga

Dari @Peter Taylor , juga dalam 13 byte.

~:X,{)X\%!},,

Bagaimana itu bekerja

~               Evaluate the input
 :X             Store input in variable X
   ,            Create array [0..X-1]
    {     },    Filter array using the following block
     )          Increment i in array
      X\        Add X to stack, swap with i
        %       X mod i,
         !      Logical not so that 1 if divisible by n else 0
            ,   Get length of the filtered array, the answer

Untuk panjang yang sama Anda juga bisa memiliki~:X,{)X\%!},,
Peter Taylor

4

J, 13 12 11 byte

Golf pertamaku di J. Aku masih mempelajarinya.

Menyimpan satu byte berkat Dennis.

Disimpan satu byte lagi berkat randomra.

1+/@,0=i.|]

Penjelasan:

1+/@,0=i.|]
       i.        the array 0 .. n-1
         |]      mod n
     0=          replace 0 by 1, and nonzero entries by 0
1   ,            prepend 1 to the array
 +/@             take the sum

3

Arcyóu , 12 byte

Ayo mulai pestanya!

(F(x)(_(d/ x

Ini menggunakan fungsi bawaan d/. Berikut adalah versi tanpa built-in (27 byte):

(F(x)(](+(f i(_ 1 x)(‰ x i

Penjelasan:

(F(x)              ; Anonymous function with one parameter x
  (]               ; Increment
    (+             ; Sum
      (f i(_ 1 x)  ; For i in range from 1 to x-1 inclusive:
        (‰ x i     ; x divisible by i

3

CJam, 11 byte

ri_,:)f%0e=

Uji di sini.

Penjelasan

CJam tidak memiliki bawaan untuk ini, jadi kami melakukan pembagian percobaan.

ri  e# Read input and convert to integer N.
_,  e# Duplicate and turn into range [0 1 ... N-1]
:)  e# Increment each element in the range to get [1 2 ... N]
f%  e# Take N modulo each of the list elements.
0e= e# Count the zeroes.

Bonus

Berikut adalah solusi yang menarik pada 12 byte (yang saya duga mungkin paling pendek dalam bahasa seperti J):

ri_)2m*::*e=

Hasilnya sama dengan berapa kali nmuncul dalam n x ntabel perkalian:

ri  e# Read input and convert to integer N.
_)  e# Duplicate and increment.
2m* e# Take Cartesian product of [0 1 ... N] with itself.
::* e# Compute the product of each pair.
e=  e# Count the occurrences of N.

3

Matlab, 20 byte

Lakukan k mod nuntuk setiap k = 1,...,n, kemudian lakukan not(yang mengubah setiap nonzer menjadi nol dan setiap nol menjadi 1) dan jumlahkan semua nilai tersebut.

@(n)sum(~mod(n,1:n))

Ini akan menjadi pendekatan saya juga!
Luis Mendo

Menarik bahwa panjangnya sama dengan length(divisors(n)).
Akumulasi

@Accumulation Anda masih perlu menambahkan @(n)untuk menjadikannya submision yang valid
flawr

3

Julia, 20 byte

n->sum(i->n%i<1,1:n)

Ini adalah fungsi anonim yang berfungsi sebagai berikut: Untuk setiap bilangan bulat dari 1 ke input, uji apakah input modulo bilangan bulat adalah nol. Jika demikian, nilainya akan menjadi truesebaliknya false. Kami menjumlahkan boolean yang secara implisit dilemparkan ke bilangan bulat, menghasilkan jumlah pembagi.


Solusi yang lebih keren (meskipun juga lebih lama), termasuk untuk kelengkapan, adalah

n->prod(collect(values(factor(n))).+1)

Ini mendapatkan faktorisasi kanonik n, yaitu \prod_{i=1}^k p_i^e_i, dan menghitung fungsi pembagi sebagai τ(n) = \prod_{i=1}^k e_i + 1.




2

Ruby, 27 byte

->n{(1..n).count{|i|n%i<1}}

Contoh dijalankan:

2.1.5 :001 > ->n{(1..n).count{|i|n%i<1}}[100]
 => 9 


2

Regex (.NET), 33 byte

^((?=.*$(?<=^\2*(.+?(?>\2?)))).)+

Dengan asumsi input dan output dalam kondisi unary, dan output diambil dari pertandingan utama regex.

Hancurkan regex:

  • .*$ ets pointer ke ujung string sehingga kita memiliki seluruh input x dalam satu arah.
  • (?<=^\2*(.+?(?>\2?))) cocok dari kanan ke kiri dan memeriksa pembagi dengan menggeser dari x ke 0.
    • (.+?(?>\2?)) adalah "variabel" yang dimulai dari 1 pada iterasi pertama dan berlanjut dari angka pada iterasi sebelumnya dan loop hingga x.
    • ^\2* memeriksa apakah x adalah kelipatan "variabel".

Ini pada dasarnya memiliki ide yang sama dengan jawaban saya untuk Menghitung Phi (bukan Pi) . Hanya ceknya yang berbeda.

Uji regex di RegexStorm .


2

Labirin , 33 byte

?:}
  :{:}%{{
@ }   " )
!{("{;"}}

Cobalah online.

Ini mengimplementasikan pembagian percobaan. Saya akan menambahkan penjelasan lengkap nanti. Ini mungkin tidak optimal, tetapi saya kesulitan menemukan sesuatu yang lebih pendek.


2

Perl 6 , 17 byte

{[+] $_ X%%1..$_} # 17

pemakaian:

say {[+] $_ X%%1..$_}(60); # 12␤

my $code = {[+] $_ X%%1..$_};

say $code(97); # 2␤

my &code = $code;
say code 92; # 6

2

Javascript (ES6), 60 57 42 40 39 37 byte

Ini mungkin bisa bermain golf lebih baik.

n=>{for(d=i=n;i;n%i--&&d--);return d}

Sunting 1: Saya benar. Menghapus kawat gigi setelah for loop.

Sunting 2: Golf hingga 40 byte dengan terima kasih kepada manatwork dan Martin Büttner .

Sunting 3: Menyimpan byte dengan mendasarkan fungsi pada jawaban C di atas.

Sunting 4: Terima kasih ן nɟuɐɯɹɐ ן oɯ dan Neil , tapi saya tidak bisa membuat eval bekerja.

Sunting 5: Lupa untuk menghapus eval.

Uji

n = <input type="number" oninput='result.innerHTML=(

n=>{for(d=i=n;i;n%i--&&d--);return d}

)(+this.value)' /><pre id="result"></pre>


2
Hentikan kebiasaan baik. Hapus varkata kunci. Kiat lainnya dalam Kiat untuk bermain golf di JavaScript dan Kiat untuk bermain golf di ECMAScript 6 .
manatwork

2
Berikan juga kebiasaan buruk: ketika Anda punya pilihan di antara ++idan i++, pilih yang pertama (ini tidak ada hubungannya dengan golf). Juga n%i<1harus menyimpan byte.
Martin Ender

2
Hanya diuji sebentar:n=>{for(d=i=0;i<n;)n%++i<1&&d++;return d}
manatwork

1
38: n => eval ('for (d = 0, i = n; i; d + = n% i - <1); d')
Mama Fun Roll

1
@manatwork Kenapa tidak n%++i||++d?
Neil

2

PowerShell, 34 byte

param($x)(1..$x|?{!($x%$_)}).Count

e.g. 

PS C:\temp> .\divisors-of-x.ps1 97
2
  • buat daftar angka dari 1 hingga x, masukkan ke dalam pipa |
  • filter pipeline on (x% item == 0), dengan secara implisit casting hasil modulo sebagai boolean dan kemudian membalikkannya menggunakan !sehingga pembagi menjadi $ true dan diizinkan melalui; menggunakan alias builtin ?untukWhere-Object
  • kumpulkan ()dan .Countberapa banyak item yang melewati filter

Diretas dengan sangat baik!
bkul

2

Jelly , 2 byte (tidak bersaing (lagi))

Æd

Cobalah online!

Saya pikir ini menggunakan fitur yang diimplementasikan setelah jawaban Jelly lainnya. Komentar jika saya salah (saya tidak bisa melihat setiap komit di baris, Anda tahu :))


2

Taksi, 2143 byte

Go to Post Office:w 1 l 1 r 1 l.Pickup a passenger going to The Babelfishery.Go to The Babelfishery:s 1 l 1 r.Pickup a passenger going to Cyclone.Go to Cyclone:n 1 l 1 l 2 r.Pickup a passenger going to Cyclone.Pickup a passenger going to Sunny Skies Park.Go to Sunny Skies Park:n 1 r.Go to Cyclone:n 1 l.Pickup a passenger going to Firemouth Grill.Pickup a passenger going to Joyless Park.Go to Firemouth Grill:s 1 l 2 l 1 r.Go to Joyless Park:e 1 l 3 r.[i][Check next value n-i]Go to Zoom Zoom:w 1 r 2 l 2 r.Go to Sunny Skies Park:w 2 l.Pickup a passenger going to Cyclone.Go to Cyclone:n 1 l.Pickup a passenger going to Divide and Conquer.Pickup a passenger going to Sunny Skies Park.Go to Joyless Park:n 2 r 2 r 2 l.Pickup a passenger going to Cyclone.Go to Sunny Skies Park:w 1 r 2 l 2 l 1 l.Go to Cyclone:n 1 l.Pickup a passenger going to Joyless Park.Pickup a passenger going to Divide and Conquer.Go to Divide and Conquer:n 2 r 2 r 1 r.Pickup a passenger going to Cyclone.Go to Cyclone:e 1 l 1 l 2 l.Pickup a passenger going to Trunkers.Pickup a passenger going to Equal's Corner.Go to Trunkers:s 1 l.Pickup a passenger going to Equal's Corner.Go to Equal's Corner:w 1 l.Switch to plan "F" if no one is waiting.Pickup a passenger going to Knots Landing.Go to Firemouth Grill:n 3 r 1 l 1 r.Pickup a passenger going to The Underground.Go to The Underground:e 1 l.Pickup a passenger going to Firemouth Grill.Go to Knots Landing:n 2 r.Go to Firemouth Grill:w 1 l 2 r.Go to Joyless Park:e 1 l 3 r.Switch to plan "N".[F][Value not a divisor]Go to Joyless Park:n 3 r 1 r 2 l 4 r.[N]Pickup a passenger going to The Underground.Go to The Underground:w 1 l.Switch to plan "E" if no one is waiting.Pickup a passenger going to Joyless Park.Go to Joyless Park:n 1 r.Switch to plan "i".[E]Go to Sunny Skies Park:n 3 l 2 l 1 l.Pickup a passenger going to What's The Difference.Go to Firemouth Grill:s 1 l 1 l 1 r.Pickup a passenger going to What's The Difference.Go to What's The Difference:w 1 l 1 r 2 r 1 l.Pickup a passenger going to The Babelfishery.Go to The Babelfishery:e 3 r.Pickup a passenger going to Post Office.Go to Post Office:n 1 l 1 r.

Cobalah online!

Tidak Disatukan:

Go to Post Office: west 1st left 1st right 1st left.
Pickup a passenger going to The Babelfishery.
Go to The Babelfishery: south 1st left 1st right.
Pickup a passenger going to Cyclone.
Go to Cyclone: north 1st left 1st left 2nd right.
Pickup a passenger going to Cyclone.
Pickup a passenger going to Sunny Skies Park.
Go to Sunny Skies Park: north 1st right.
Go to Cyclone: north 1st left.
Pickup a passenger going to Firemouth Grill.
Pickup a passenger going to Joyless Park.
Go to Firemouth Grill: south 1st left 2nd left 1st right.
Go to Joyless Park: east 1st left 3rd right.
[i]
[Check next value n-i]
Go to Zoom Zoom: west 1st right 2nd left 2nd right.
Go to Sunny Skies Park: west 2nd left.
Pickup a passenger going to Cyclone.
Go to Cyclone: north 1st left.
Pickup a passenger going to Divide and Conquer.
Pickup a passenger going to Sunny Skies Park.
Go to Joyless Park: north 2nd right 2nd right 2nd left.
Pickup a passenger going to Cyclone.
Go to Sunny Skies Park: west 1st right 2nd left 2nd left 1st left.
Go to Cyclone: north 1st left.
Pickup a passenger going to Joyless Park.
Pickup a passenger going to Divide and Conquer.
Go to Divide and Conquer: north 2nd right 2nd right 1st right.
Pickup a passenger going to Cyclone.
Go to Cyclone: east 1st left 1st left 2nd left.
Pickup a passenger going to Trunkers.
Pickup a passenger going to Equal's Corner.
Go to Trunkers: south 1st left.
Pickup a passenger going to Equal's Corner.
Go to Equal's Corner: west 1st left.
Switch to plan "F" if no one is waiting.
Pickup a passenger going to Knots Landing.
Go to Firemouth Grill: north 3rd right 1st left 1st right.
Pickup a passenger going to The Underground.
Go to The Underground: east 1st left.
Pickup a passenger going to Firemouth Grill.
Go to Knots Landing: north 2nd right.
Go to Firemouth Grill: west 1st left 2nd right.
Go to Joyless Park: east 1st left 3rd right.
Switch to plan "N".
[F]
[Value not a divisor]
Go to Joyless Park: north 3rd right 1st right 2nd left 4th right.
[N]
Pickup a passenger going to The Underground.
Go to The Underground: west 1st left.
Switch to plan "E" if no one is waiting.
Pickup a passenger going to Joyless Park.
Go to Joyless Park: north 1st right.
Switch to plan "i".
[E]
Go to Sunny Skies Park: north 3rd left 2nd left 1st left.
Pickup a passenger going to What's The Difference.
Go to Firemouth Grill: south 1st left 1st left 1st right.
Pickup a passenger going to What's The Difference.
Go to What's The Difference: west 1st left 1st right 2nd right 1st left.
Pickup a passenger going to The Babelfishery.
Go to The Babelfishery: east 3rd right.
Pickup a passenger going to Post Office.
Go to Post Office: north 1st left 1st right.

Penjelasan:

Convert stdin to a number and store it in three locations for three purposes:
   Original (Sunny Skies Park)
   Counter for tested values (Joyless Park)
   Counter for divisors found (Firemouth Grill)
Divide the original by each Joyless Park value in turn.
If the division result equals the truncated division result, then it's a divisor.
When a divisor is found, subtract one from Firemouth Grill.
Repeat until Joyless Park hits zero.
Pickup the original from Sunny Skies Park and subtract the value from Firemouth Grill.
Convert the result to a string and print to stdout.


2

Formula Excel, 42 28 byte

Sunting: Saya baru sadar saya tidak perlu menggunakan INDIRECT, menghemat 14 byte!

Berikut ini harus dimasukkan sebagai rumus array ( Ctrl+ Shift+ Enter):

=SUM(--NOT(MOD(N,ROW(1:N))))

Di mana N adalah angka untuk diuji.

Contoh:

{SUM(--NOT(MOD(32,ROW(1:32))))}
Result: 6
{SUM(--NOT(MOD(144,ROW(1:144))))}
Result: 15

Penjelasan:

SUM(--NOT(MOD(N,ROW(1:N))))       Full formula

                ROW(1:N)          Generates an array of row numbers e.g {1;2;3;4;...N}
          MOD(N,ROW(1:N))         Does N MOD {1;2;3;4;,...N}
      NOT(MOD(N,ROW(1:N)))        Coerces zeros to ones, so that they may be counted, but actually returns an array of TRUE;FALSE;FALSE;...
    --NOT(MOD(N,ROW(1:N)))        Coerces the TRUEs to 1s and FALSEs to 0s.
SUM(--NOT(MOD(N,ROW(1:N))))       Sum the ones for the result.


1

Mathematica, 16 byte

Length@*Divisors

Komposisi fungsi sederhana dari built-in.


1

Minkolang 0,13 , 16 byte

ndd[0ci1+%,-]-N.

Periksa semua kasing di sini.

Penjelasan

ndd           Takes number from input and duplicates it twice (n)
[             Opens for loop that runs n times
 0c           Copies bottom of stack to top (n)
   i1+        Loop counter + 1 (d)
      %       Modulo - pops d,n, then pushes n%d
       ,      Not - 1 if equal to 0, 0 otherwise
        -     Subtract
         ]    Close for loop
-             Subtract (n - 1 for each non-divisor)
N.            Output as number and stop.
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.