Sayının bölenlerini say


26

Giriş

Bu çok basit bir zorluk: sadece bir sayının bölenlerini saymanız yeterli. Daha önce benzer fakat daha karmaşık bir zorluk yaşadık , ama bunu giriş seviyesi olarak düşünüyorum.

Meydan okuma

Kesinlikle pozitif bir tamsayı verilen N, 1 ve dahil olmak üzere kaç bölücüye sahip olan çıktılar veya döndüren bir program veya işlev oluşturun N.

Giriş: Bir tam sayı> 0. Sayının, dilinizin yerel sayısal türünde gösterilebileceğini varsayabilirsiniz.

Çıktı: 1 ve sayının da dahil olduğu pozitif tamsayı bölenlerin sayısı.

Gönderimler bayt cinsinden puanlanacaktır . Bayt sayınızı oluşturmak için herhangi bir makul yöntemi kullanabilirsiniz, ancak bu web sitesini kullanışlı bulabilirsiniz .

Bu , yani en düşük puan kazanır!

Düzenleme: FryAmTheEggman'ın 5 bayt Pyth cevabı galibi görünüyor! Yine de yeni cevaplar göndermekten çekinmeyin; daha kısa bir şey bulabilirseniz kabul edilen cevabı değiştiririm.

Test Kılıfları

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

Liderler

Burada hem düzenli bir lider tablosu hem de kazananların dile göre genel bir bakışı oluşturmak için bir Stack Snippet'i var.

Cevabınızın göründüğünden emin olmak için, lütfen aşağıdaki Markdown şablonunu kullanarak cevabınızı bir başlık ile başlatın:

# Language Name, N bytes

Gönderinizin Nbüyüklüğü nerede ? Puanınızı artırmak varsa, olabilir onları içinden vurarak, başlığa eski hesapları tutmak. Örneğin:

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

Başlığınıza birden fazla sayı eklemek istiyorsanız (örneğin, puanınız iki dosyanın toplamı olduğundan veya tercüman bayrağı cezalarını ayrı ayrı listelemek istediğiniz için), gerçek puanın başlıktaki son sayı olduğundan emin olun :

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

Dil adını, daha sonra büyük afiş snippet'inde görünecek bir bağlantı da yapabilirsiniz:

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

Yanıtlar:


19

Pyth, 5

l{yPQ

Girdilerin asal çarpanlarında altkümeler işlemini kullanır, daha sonra sadece benzersiz faktör listelerini tutar ve bu sayıyı döndürür.

Test odası

açıklama

Örnek olarak 25 kullanımı, böylece alt küme listesi çok uzun değil

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

Büyüleyici. Güzel yaklaşım
Cyoce


11

LabVIEW, 4938 Bayt

Açıkçası bu kod golf için uygun değil ama her neyse, bu yüzden benim ilk yazı ve lolz burada gider. enter image description here


Programlama Bulmacaları ve Code Golf'a Hoş Geldiniz! Sormamın sakıncası yoksa, bunu nasıl puanladın? Meta'da bir emsal bulamadım.
bkul


Ve 4.938 bayt mıydı? Örneğin kilobayt değil mi?
bkul

doğruluk için bayt sayımı kb sayımı aldı
Eumel

4
@bkul, kargaşanın bir kesinti .(bazı dillerde yaygın olduğu gibi) değil, onluk bir nokta değil, binlerce ayırıcı anlamına geldiği için kaynaklandığını düşünüyorum .
Martin Ender

10

Haskell, 28 bayt

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

Buradaki hile kalanın 0gösterge işlevini kullanıp kullanmadığını test etmektir 0^.

0^0 = 1
0^_ = 0

Bu işe yarıyor çünkü 0'ın herhangi bir pozitif gücü 0'dır, oysaki 0 ​​^ 0 birleştirici olarak 1'in boş ürünüdür.

Bunu filtrelemeyle karşılaştırın

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

7

Dyalog APL , 7 6 bayt

≢∘∪⊢∨⍳

Her bir ( ¨) test senaryosunda aşağıdaki gibi isimlendirilip yeniden kullanılabilen isimlendirilmemiş bir fonksiyondur :

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

Açıklama:

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

Kont eşsiz GCD'nın kendisinin tamsayılar-dek ve her .

Bir bayt kaydettiğiniz için teşekkür ederiz.


Eski versiyon: +/0=⍳|⊢

Bu nasıl çalışır:

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

⍳|⊢1-den-argüman-bölüm-argüman-argüman argümanı,
0=eğer 0, bölme
+/dayanımına eşitse, Boolean toplamı, yani olanların sayısı.


6

Python 2, 37 bayt

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

Özyinelemeli bir işlev. iBölendeki isteğe bağlı giriş test ediliyor. Bu ifade (n%i<1), bölenler için True(eşittir 1) bölünebilirliği test eder . Sonuç için alıcı ifadesine eklenir i+1. Zaman i==n, tam sayı zemin bölme ulaşıldığında i/niçin değerlendirir 1ve bu değer için muhasebe, temel durum olarak döndürülür nkendisinin bölen olmak n.


38:

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

Anonim bir işlev. Tüm olası bölenleri test 1eder n. Bu kadar kaydırılır 0ile n-1de range(n)kullanılarak -~ekler 1. Bools'un toplanması, Python'un True/ Falseas 1/ olarak davrandığı gerçeğini kullanır 0.


6

Retina , 17 bayt

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

Tekli giriş, ondalık olarak çıkış.

Çevrimiçi deneyin.

Tek bir regex ile çağrıldığında, Retina sadece eşleşmeleri sayar. Regex'in kendisi , solundaki tek sayının tüm girdilerin böleni olduğu bir konumla eşleşir . Aynı zamanda, etraftaki atomların atomik olduğu gerçeğinden de faydalanıyorum, böylece bir ^çapa kullanmama gerek kalmıyor .

İlk gözbebekleri gruptaki öneklerin tamamını yakalar 1. Bu asla başarısız olamaz, bu yüzden gözetimden sonra grup 1'de bunun ne olduğunu ve daha fazla değişmeyeceğini biliyoruz.

Daha sonra bakış açısı, yakalanan dizgiyi (potansiyel bölenimiz) 0 veya daha fazla tekrarlayarak dizinin sonuna ulaşıp ulaşamayacağımızı kontrol eder.


6

J, 10 bayt

[:*/1+_&q:

Bu isimsiz, monadik bir fiildir. Σ 0 (∏p k α k ) ∏ (α k + 1) olarak hesaplar .

J.Js ile çevrimiçi deneyin .

Nasıl çalışır

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

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

q:Meydan okumanın önemli bir bölümünü çözdüğü için izin verildiğini sanmıyorum . Peki ya[:+/0=]|~1+i.
FUZxxl

Bu, bu cevabın bir kopyası olacaktır . Ayrıca, yerleşikler varsayılan olarak yasak değildir ve zorluk bunlardan bahsetmiyor gibi görünmektedir.
Dennis

Bir meydan okuma işinin tamamını / neredeyse tümünü yapan yerleşikler genellikle yasaktır, ancak nedeninizi takip edebilirim q: .
FUZxxl

1
Onlar değil. Keşke onlar olsaydı, değiller.
Dennis

Hrmpf hrmpf biraz berbat.
FUZxxl

6

Golfscript, 19 18 17 13 bayt

Martin Büttner'a teşekkürler .

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

Nasıl çalışır

~               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

Ayrıca

Gönderen @Peter Taylor , ayrıca 13 bayt.

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

Nasıl çalışır

~               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

Aynı uzunlukta sahip olabilirsiniz~:X,{)X\%!},,
Peter Taylor

4

J, 13 12 11 bayt

J.'deki ilk golfüm hala öğreniyorum.

Dennis sayesinde bir bayt kurtardım.

Randomra sayesinde bir bayt daha kaydedildi.

1+/@,0=i.|]

Açıklama:

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 bayt

Parti başlasın!

(F(x)(_(d/ x

Bu yerleşik işlevi kullanır d/. İşte yerleşik olmayan bir sürüm (27 bayt):

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

Açıklama:

(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 bayt

ri_,:)f%0e=

Burada test et.

açıklama

CJam bunun için yerleşik bir sisteme sahip değil, bu yüzden deneme bölümünde çalışıyoruz.

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

İşte 12 byte'ta ilginç bir çözüm (J gibi bir dilde en kısa olabileceğinden şüpheliyim):

ri_)2m*::*e=

Sonuç çarpım tablosunda kaç kez ngöründüğüne eşittir n x n:

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 bayt

k mod nHer biri için gerçekleştirin k = 1,...,n, ardından gerçekleştirin not(her nonzer'i sıfıra ve her sıfırı 1'e döndürür) ve tüm bu değerleri toplayın.

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

Bu benim de yaklaşımım olurdu!
Luis Mendo

Bunun, aynı uzunluktaki olması ilginç length(divisors(n)).
Birikim

@ Toplama @(n)geçerli bir alt
yazı

3

Julia, 20 bayt

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

Bu, aşağıdaki gibi çalışan anonim bir işlevdir: 1'den girişe her tamsayı için, tamsayı giriş modülünün sıfır olup olmadığını test edin. Eğer öyleyse, değer trueaksi takdirde olacaktır false. Tamsayılara dolaylı olarak aktarılan ve bölenlerin sayısını veren booleansların toplamını yaparız.


Tamlık uğruna dahil edilen çok daha soğuk (aynı zamanda çok daha uzun) bir çözüm

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

Bu n, örneğin kanonik faktoringi alır ve \prod_{i=1}^k p_i^e_ibölen fonksiyonunu şu şekilde hesaplar τ(n) = \prod_{i=1}^k e_i + 1.




2

Ruby, 27 bayt

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

Örnek çalışma:

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


2

Regex (.NET), 33 bayt

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

Girdi ve çıkışın aynı olduğu varsayılır ve çıkışın regex'in ana maçından alınır.

Regex'in parçalanması:

  • .*$ imleci dizgenin sonuna getirir, böylece x girişinin tamamı bir yönde olur.
  • (?<=^\2*(.+?(?>\2?))) sağdan sola doğru eşleşir ve x'ten 0'a doğru dönerek böleni kontrol eder.
    • (.+?(?>\2?)) ilk yinelemede 1'den başlayan ve önceki yinelemedeki sayıdan devam eden ve x'e kadar dönen bir "değişken" dir.
    • ^\2* x'in "değişken" in bir katı olup olmadığını kontrol eder.

Temelde Phi'yi Hesapla (Pi değil) cevabımla aynı düşünceye sahip . Sadece çek farklı.

Regex'i RegexStorm'da test edin .


2

Labirent , 33 bayt

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

Çevrimiçi deneyin.

Bu deneme bölümünü uygular. Daha sonra tam bir açıklama ekleyeceğim. Muhtemelen optimal değildir, ancak daha kısa bir şeyle gelmekte zorlanıyorum.



2

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

Bu muhtemelen daha iyi golf olabilir.

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

Düzenleme 1: Haklıydım. For loop sonrası diş telleri çıkarıldı.

Düzenleme 2: İnsan yapımı ve Martin Büttner sayesinde 40 byte'a kadar golf oynadı .

Düzenleme 3: Yukarıdaki C cevabı fonksiyonunu temel alarak bir bayt kaydetme .

Düzenleme 4: Teşekkür etmek ן nɟuɐɯɹɐ ן oɯ ve Neil , ama işe eval alınamıyor.

Düzenleme 5: Değerlendirmeyi kaldırmak için unuttum.

Ölçek

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
İyi alışkanlıklardan vazgeç. varAnahtar kelimeleri kaldırın . Daha ipuçları JavaScript golf için İpuçları ve ECMAScript'te 6'da Golf için ipuçları .
Manatwork

2
Ayrıca kötü alışkanlıklardan da vazgeç: ++ive arasında bir seçim yaptığında i++, ilkini seç (bunun golf ile ilgisi yok). Ayrıca n%i<1bir bayt kaydetmelisiniz.
Martin Ender

2
Sadece kısaca test edilmiştir:n=>{for(d=i=0;i<n;)n%++i<1&&d++;return d}
Manat çalışması 27:15

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

1
@ manatwork Neden olmasın n%++i||++d?
Neil

2

PowerShell, 34 bayt

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

e.g. 

PS C:\temp> .\divisors-of-x.ps1 97
2
  • 1'den x'e kadar olan sayıların bir listesini oluşturun, bunları boru hattına besleyin |
  • boru hattını (x% item == 0) üzerine filtre ederek, modulo sonucunu bir boolean olarak örtük şekilde dökerek ve ardından onu kullanarak ters çevirerek !bölücülerin $ true olmasını sağlayın; için yerleşik takma adını ?kullanmaWhere-Object
  • Toplanın ()ve .Countfiltreden kaç parça geçti

Çok güzel saldırı!
bkul,

2

Jöle , 2 byte (rekabet etmeyen (tekrar))

Æd

Çevrimiçi deneyin!

Bunun diğer Jelly cevabından sonra uygulanan özellikleri kullandığını düşünüyorum . Olsa da yanılıyorsam yorum yap (Her biri üst üste sıraya bakmadan bakamıyorum :))


2

Taksi, 2143 bayt

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.

Çevrimiçi deneyin!

Ungolfed:

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.

Açıklama:

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

Excel Formülü, 42 28 bayt

Düzenleme: Sadece fark ettim ki kullanmama gerek yok INDIRECT 14 bayt tasarrufu !

Bir dizi formülü ( Ctrl+ Shift+ Enter) olarak aşağıdakiler girilmelidir :

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

N test edilecek sayıdır.

Örnekler:

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

Açıklama:

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 bayt

Length@*Divisors

Yerleşiklerin basit fonksiyon bileşimi.


1

Minkolang 0.13 , 16 bayt

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

Buradaki tüm davaları kontrol et.

açıklama

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.
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.